CONVOLUTIONAL NEURAL NETWORKS FOR DETECTION OF MALFORMATIONS OF CORTICAL DEVELOPMENT

Import packages and functions

In [1]:
import matplotlib as mpl
%matplotlib inline
from PIL import Image
import numpy as np
import pandas as pd
import os
from skimage.color import gray2rgb
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from mpl_toolkits.axes_grid1 import ImageGrid
from sklearn.utils import shuffle
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import activations
from tensorflow.keras.preprocessing import image
from tensorflow.keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Input, concatenate, Dense, Dropout, Activation, Flatten, GaussianNoise, BatchNormalization, GlobalAveragePooling2D, Conv2D, MaxPooling2D
from tensorflow.keras.optimizers import Adam, RMSprop
from tensorflow.keras.applications.inception_v3 import InceptionV3
from tensorflow.keras.applications.resnet50 import ResNet50
from tensorflow.keras.applications.inception_resnet_v2 import InceptionResNetV2
from tensorflow.keras.models import Model
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.metrics import roc_auc_score
from tensorflow.keras.models import model_from_json
from tensorflow.keras import backend as K
from tensorflow.keras.utils import to_categorical
from tf_keras_vis.gradcam import Gradcam
from tf_keras_vis.saliency import Saliency
from tf_keras_vis.utils import normalize
from sklearn.metrics import classification_report
In [2]:
# Define image size
mpl.rcParams['figure.figsize'] = (20,24)

FIRST PART: DATA INGESTION AND DATA AUGMENTATION

Data description

We have trained our CNNs with a training set of:

-369 normal MRI images from 19 control patients

-389 MRI images of periventricular nodular heterotopia (PVNH) from 21 patients

And a validation set of:

-159 normal MRI images from 8 control patients

-175 MRI images of periventricular nodular heterotopia (PVNH) from 4 patients

Import original images

In [3]:
# Unzip files
!unzip ~/data/Controltrain.zip -d ~/data/
!unzip ~/data/Controlval.zip -d ~/data/
!unzip ~/data/PVNHtrain.zip -d ~/data/
!unzip ~/data/PVNHval.zip -d ~/data/

# Remove the zipped files
!rm ~/data/Controltrain.zip  
!rm ~/data/Controlval.zip   
!rm ~/data/PVNHtrain.zip  
!rm ~/data/PVNHval.zip
Archive:  /home/ubuntu/data/Controltrain.zip
  inflating: /home/ubuntu/data/Controltrain/26.1_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.10_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.11_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.12_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.13_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.14_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.15_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.16_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.17_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.2_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.3_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.4_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.5_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.6_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.7_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.8_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/26.9_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.1_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.10_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.11_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.12_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.13_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.14_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.15_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.16_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.17_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.18_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.2_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.3_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.4_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.5_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.6_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.7_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.8_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/27.9_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.1_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.10_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.11_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.2_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.3_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.4_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.5_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.6_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.7_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.8_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/28.9_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.1_COR SPACE FLAIR RECON_58.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.10_COR SPACE FLAIR RECON_95.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.11_COR SPACE FLAIR RECON_102.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.12_COR SPACE FLAIR RECON_115.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.13_AX MPRAGE RECON_80.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.14_AX MPRAGE RECON_85.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.15_AX MPRAGE RECON_92.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.16_AX MPRAGE RECON_99.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.17_AX MPRAGE RECON_109.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.18_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.19_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.2_COR SPACE FLAIR RECON_61.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.20_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.21_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.22_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.23_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.24_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.25_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.26_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.27_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.28_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.29_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.3_COR SPACE FLAIR RECON_64.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.30_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.31_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.32_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.33_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.34_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.35_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.36_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.37_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.38_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.4_COR SPACE FLAIR RECON_67.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.5_COR SPACE FLAIR RECON_71.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.6_COR SPACE FLAIR RECON_76.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.7_COR SPACE FLAIR RECON_80.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.8_COR SPACE FLAIR RECON_85.jpg  
  inflating: /home/ubuntu/data/Controltrain/29.9_COR SPACE FLAIR RECON_90.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.1_COR FLAIR SPACE RECON_53.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.10_AX FLAIR SPACE RECON_74.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.11_AX FLAIR SPACE RECON_79.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.12_AX FLAIR SPACE RECON_83.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.13_AX FLAIR SPACE RECON_86.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.14_AX FLAIR SPACE RECON_90.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.15_AX FLAIR SPACE RECON_93.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.16_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.17_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.18_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.2_COR FLAIR SPACE RECON_63.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.3_COR FLAIR SPACE RECON_70.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.4_COR FLAIR SPACE RECON_75.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.5_COR FLAIR SPACE RECON_84.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.6_COR FLAIR SPACE RECON_92.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.7_COR FLAIR SPACE RECON_99.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.8_COR FLAIR SPACE RECON_104.jpg  
  inflating: /home/ubuntu/data/Controltrain/30.9_AX FLAIR SPACE RECON_70.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.1_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.10_COR MPRAGE RECON_77.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.11_COR MPRAGE RECON_81.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.12_COR MPRAGE RECON_87.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.13_AX MPRAGE RECON_92.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.14_AX MPRAGE RECON_96.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.15_AX MPRAGE RECON_102.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.16_AX MPRAGE RECON_107.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.17_AX MPRAGE RECON_116.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.18_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.19_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.2_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.20_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.21_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.22_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.23_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.24_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.25_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.26_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.27_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.28_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.29_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.3_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.30_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.31_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.32_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.33_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.34_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.4_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.5_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.6_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.7_COR MPRAGE RECON_58.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.8_COR MPRAGE RECON_66.jpg  
  inflating: /home/ubuntu/data/Controltrain/31.9_COR MPRAGE RECON_72.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.1_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.10_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.11_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.12_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.13_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.14_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.15_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.16_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.17_SAGITTAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.18_SAGITTAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.19_SAGITTAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.2_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.3_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.4_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.5_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.6_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.7_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.8_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/32.9_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.1_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.10_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.11_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.12_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.13_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.14_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.15_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.16_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.17_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.18_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.19_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.2_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.20_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.21_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.22_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.23_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.24_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.25_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.26_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.27_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.28_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.29_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.3_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.30_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.31_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.32_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.33_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.34_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.35_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.36_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.37_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.38_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.39_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.4_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.40_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.41_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.42_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.5_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.6_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.7_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.8_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/33.9_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.1_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.10_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.11_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.12_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.13_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.14_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.15_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.16_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.17_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.18_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.19_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.2_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.20_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.21_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.22_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.23_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.24_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.25_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.26_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.3_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.4_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.5_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.6_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.7_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.8_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/34.9_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.1_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.10_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.11_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.2_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.3_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.4_AX MPR_84.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.5_AX MPR_91.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.6_AX MPR_96.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.7_AX MPR_104.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.8_AX MPR_113.jpg  
  inflating: /home/ubuntu/data/Controltrain/35.9_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.1_AX MPR RECON_128.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.10_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.11_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.12_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.2_AX MPR RECON_135.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.3_AX MPR RECON_144.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.4_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.5_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.6_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.7_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.8_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/36.9_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.1_CORONAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.10_AXIAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.11_AXIAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.12_AXIAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.13_AXIAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.14_COR MPR RECON_67.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.15_COR MPR RECON_72.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.16_COR MPR RECON_76.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.17_COR MPR RECON_84.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.18_COR MPR RECON_90.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.19_COR MPR RECON_97.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.2_CORONAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.20_COR MPR RECON_103.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.21_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.22_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.23_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.24_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.25_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.26_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.27_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.28_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.29_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.3_CORONAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.30_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.31_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.32_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.33_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.34_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.35_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.4_CORONAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.5_CORONAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.6_CORONAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.7_CORONAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.8_CORONAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/37.9_AXIAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.1_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.10_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.11_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.12_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.13_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.14_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.15_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.16_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.17_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.2_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.3_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.4_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.5_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.6_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.7_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.8_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/38.9_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controltrain/39.1_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/39.2_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/39.3_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/39.4_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/39.5_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/39.6_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/39.7_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.1_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.10_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.11_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.12_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.13_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.2_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.3_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.4_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.5_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.6_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.7_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.8_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/40.9_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.1_SAGITTAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.10_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.11_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.12_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.2_SAGITTAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.3_SAGITTAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.4_SAGITTAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.5_SAGITTAL_T1.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.6_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.7_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.8_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/41.9_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.1_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.10_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.11_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.12_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.13_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.14_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.15_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.16_CORONAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.17_CORONAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.2_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.3_AXIAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.4_AXIAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.5_AXIAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.6_AXIAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.7_AXIAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.8_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/42.9_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.1_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.11_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.12_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.13_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.14_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.15_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.16_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.17_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.18_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.2_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/43.3_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.1_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.10_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.11_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.2_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.3_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.4_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.5_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.6_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.7_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.8_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controltrain/44.9_CORONAL_T2.jpg  
Archive:  /home/ubuntu/data/Controlval.zip
  inflating: /home/ubuntu/data/Controlval/18.1_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.10_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.11_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.12_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.13_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/18.14_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/18.15_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/18.16_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/18.17_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/18.18_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/18.19_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/18.2_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.20_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.21_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.22_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.23_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.24_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.25_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.26_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.27_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.28_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.29_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.3_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.30_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.31_COR T2 RECON_62.jpg  
  inflating: /home/ubuntu/data/Controlval/18.32_COR T2 RECON_68.jpg  
  inflating: /home/ubuntu/data/Controlval/18.33_COR T2 RECON_73.jpg  
  inflating: /home/ubuntu/data/Controlval/18.34_COR T2 RECON_79.jpg  
  inflating: /home/ubuntu/data/Controlval/18.35_COR T2 RECON_84.jpg  
  inflating: /home/ubuntu/data/Controlval/18.36_COR T2 RECON_92.jpg  
  inflating: /home/ubuntu/data/Controlval/18.37_COR T2 RECON_97.jpg  
  inflating: /home/ubuntu/data/Controlval/18.38_COR T2 RECON_105.jpg  
  inflating: /home/ubuntu/data/Controlval/18.39_COR T2 RECON_110.jpg  
  inflating: /home/ubuntu/data/Controlval/18.4_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.40_COR T2 RECON_116.jpg  
  inflating: /home/ubuntu/data/Controlval/18.5_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.6_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.7_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.8_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/18.9_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/19.1_AX FLAIR_85.jpg  
  inflating: /home/ubuntu/data/Controlval/19.10_AX FLAIR_142.jpg  
  inflating: /home/ubuntu/data/Controlval/19.15_AX RECON_80.jpg  
  inflating: /home/ubuntu/data/Controlval/19.16_AX RECON_88.jpg  
  inflating: /home/ubuntu/data/Controlval/19.17_AX RECON_93.jpg  
  inflating: /home/ubuntu/data/Controlval/19.18_AX RECON_102.jpg  
  inflating: /home/ubuntu/data/Controlval/19.19_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/19.2_AX FLAIR_91.jpg  
  inflating: /home/ubuntu/data/Controlval/19.20_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/19.21_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/19.3_AX FLAIR_97.jpg  
  inflating: /home/ubuntu/data/Controlval/19.4_AX FLAIR_104.jpg  
  inflating: /home/ubuntu/data/Controlval/19.5_AX FLAIR_110.jpg  
  inflating: /home/ubuntu/data/Controlval/19.6_AX FLAIR_119.jpg  
  inflating: /home/ubuntu/data/Controlval/19.7_AX FLAIR_124.jpg  
  inflating: /home/ubuntu/data/Controlval/19.8_AX FLAIR_129.jpg  
  inflating: /home/ubuntu/data/Controlval/19.9_AX FLAIR_135.jpg  
  inflating: /home/ubuntu/data/Controlval/20.1_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/20.10_AX T2 SPACE RECON_119.jpg  
  inflating: /home/ubuntu/data/Controlval/20.11_AX T2 SPACE RECON_124.jpg  
  inflating: /home/ubuntu/data/Controlval/20.12_AX T2 SPACE RECON_129.jpg  
  inflating: /home/ubuntu/data/Controlval/20.2_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/20.3_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/20.4_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/20.5_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/20.6_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/20.7_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/20.8_AX T2 SPACE RECON_108.jpg  
  inflating: /home/ubuntu/data/Controlval/20.9_AX T2 SPACE RECON_114.jpg  
  inflating: /home/ubuntu/data/Controlval/21.1_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controlval/21.10_AXIAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controlval/21.11_AXIAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controlval/21.12_AXIAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controlval/21.2_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controlval/21.3_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controlval/21.4_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/21.5_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/21.6_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/21.7_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/21.8_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/21.9_AXIAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/22.1_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controlval/22.10_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/22.11_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/22.12_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/22.13_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/22.14_AX MPRAGE_100.jpg  
  inflating: /home/ubuntu/data/Controlval/22.15_AX MPRAGE_104.jpg  
  inflating: /home/ubuntu/data/Controlval/22.16_AX MPRAGE_110.jpg  
  inflating: /home/ubuntu/data/Controlval/22.17_AX MPRAGE_115.jpg  
  inflating: /home/ubuntu/data/Controlval/22.18_AX MPRAGE_120.jpg  
  inflating: /home/ubuntu/data/Controlval/22.19_AX MPRAGE_127.jpg  
  inflating: /home/ubuntu/data/Controlval/22.2_SAGITTAL_MPRAGE.jpg  
  inflating: /home/ubuntu/data/Controlval/22.20_AX MPRAGE_135.jpg  
  inflating: /home/ubuntu/data/Controlval/22.21_COR MPRAGE_40.jpg  
  inflating: /home/ubuntu/data/Controlval/22.22_COR MPRAGE_46.jpg  
  inflating: /home/ubuntu/data/Controlval/22.23_COR MPRAGE_52.jpg  
  inflating: /home/ubuntu/data/Controlval/22.24_COR MPRAGE_58.jpg  
  inflating: /home/ubuntu/data/Controlval/22.25_COR MPRAGE_72.jpg  
  inflating: /home/ubuntu/data/Controlval/22.26_COR MPRAGE_82.jpg  
  inflating: /home/ubuntu/data/Controlval/22.27_COR MPRAGE_89.jpg  
  inflating: /home/ubuntu/data/Controlval/22.28_COR MPRAGE_97.jpg  
  inflating: /home/ubuntu/data/Controlval/22.29_COR MPRAGE_105.jpg  
  inflating: /home/ubuntu/data/Controlval/22.3_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/22.4_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/22.5_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/22.6_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/22.7_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/22.8_AXIAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/22.9_SAGITTAL_FLAIR.jpg  
  inflating: /home/ubuntu/data/Controlval/23.1_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controlval/23.10_COR MPRAGE RECON_100.jpg  
  inflating: /home/ubuntu/data/Controlval/23.11_COR MPRAGE RECON_113.jpg  
  inflating: /home/ubuntu/data/Controlval/23.12_COR MPRAGE RECON_118.jpg  
  inflating: /home/ubuntu/data/Controlval/23.13_COR MPRAGE RECON_128.jpg  
  inflating: /home/ubuntu/data/Controlval/23.2_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controlval/23.3_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controlval/23.4_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/23.5_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/23.6_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/23.7_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/23.8_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/23.9_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/24.1_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controlval/24.10_mprage- ax_107.jpg  
  inflating: /home/ubuntu/data/Controlval/24.11_mprage- ax_112.jpg  
  inflating: /home/ubuntu/data/Controlval/24.12_mprage- ax_116.jpg  
  inflating: /home/ubuntu/data/Controlval/24.13_mprage- ax_121.jpg  
  inflating: /home/ubuntu/data/Controlval/24.14_mprage- ax_126.jpg  
  inflating: /home/ubuntu/data/Controlval/24.15_mprage- ax_133.jpg  
  inflating: /home/ubuntu/data/Controlval/24.16_mprage- ax_140.jpg  
  inflating: /home/ubuntu/data/Controlval/24.17_mprage- ax_150.jpg  
  inflating: /home/ubuntu/data/Controlval/24.18_mprage- ax_154.jpg  
  inflating: /home/ubuntu/data/Controlval/24.19_mprage- ax_158.jpg  
  inflating: /home/ubuntu/data/Controlval/24.2_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controlval/24.20_mprage- ax_162.jpg  
  inflating: /home/ubuntu/data/Controlval/24.3_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controlval/24.4_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controlval/24.5_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/24.6_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/24.7_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/24.8_mprage- ax_100.jpg  
  inflating: /home/ubuntu/data/Controlval/24.9_mprage- ax_103.jpg  
  inflating: /home/ubuntu/data/Controlval/25.1_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controlval/25.10_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/25.11_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/25.12_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/25.13_COR MPRAGE RECON_111.jpg  
  inflating: /home/ubuntu/data/Controlval/25.14_COR MPRAGE RECON_120.jpg  
  inflating: /home/ubuntu/data/Controlval/25.15_COR MPRAGE RECON_127.jpg  
  inflating: /home/ubuntu/data/Controlval/25.16_COR MPRAGE RECON_138.jpg  
  inflating: /home/ubuntu/data/Controlval/25.2_AXIAL_TSE.jpg  
  inflating: /home/ubuntu/data/Controlval/25.3_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/25.4_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/25.5_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/25.6_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/25.7_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/25.8_CORONAL_T2.jpg  
  inflating: /home/ubuntu/data/Controlval/25.9_CORONAL_T2.jpg  
Archive:  /home/ubuntu/data/PVNHtrain.zip
  inflating: /home/ubuntu/data/PVNHtrain/11.1_AX TSE T2_38.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/11.10_AX MPRAGE RECONS_147.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/11.2_AX TSE T2_42.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/11.3_AX TSE T2_43.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/11.4_COR FSE T2_49.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/11.5_COR FSE T2_50.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/11.6_COR MPRAGE RECONS_132.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/11.7_COR MPRAGE RECONS_134.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/11.8_AX MPRAGE RECONS_145.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/11.9_AX MPRAGE RECONS_146.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/12.1_AXFSET2_21.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/12.2_AXFSET2_22.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/12.3_AXT2FLAIR_21.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/12.4_AXT2FLAIR_22.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/12.5_CORFSET2_20.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/12.6_CORFSET2_21.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/13.1_AX FSE T2 #2_39.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/13.2_AX FSE T2 #2_40.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/13.3_COR T2-BR_16.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.1_AXIAL TSE T2_31.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.10_AXT2FLAIR_34.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.11_AXT2FLAIR_35.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.12_AXT2FLAIR_36.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.13_COR T2 TSE_28.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.14_COR T2 TSE_30.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.15_COR T2 TSE_32.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.16_COR T2 TSE_34.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.17_COR T2 TSE_36.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.18_COR T2 TSE_38.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.19_COR T2 TSE_40.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.2_AXIAL TSE T2_36.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.20_COR T2 TSE_42.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.21_COR T2 TSE_44.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.22_COR T2 TSE_46.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.23_COR T2 TSE_48.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.24_COR T2 TSE_50.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.25_COR T2 TSE_52.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.26_AX MPR RECON_88.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.27_AX MPR RECON_90.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.28_AX MPR RECON_92.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.29_AX MPR RECON_94.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.3_AXIAL TSE T2_38.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.30_AX MPR RECON_96.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.31_AX MPR RECON_98.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.32_AX MPR RECON_100.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.33_AX MPR RECON_102.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.34_AX MPR RECON_104.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.35_AX MPR RECON_106.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.36_AX MPR RECON_108.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.37_AX MPR RECON_110.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.38_AX MPR RECON_112.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.39_COR RECON MPR_60.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.4_AXIAL TSE T2_40.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.40_COR RECON MPR_63.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.41_COR RECON MPR_66.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.42_COR RECON MPR_69.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.43_COR RECON MPR_72.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.44_COR RECON MPR_75.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.45_COR RECON MPR_78.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.46_COR RECON MPR_81.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.47_COR RECON MPR_84.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.48_COR RECON MPR_87.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.49_COR RECON MPR_90.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.5_AXIAL TSE T2_42.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.50_COR RECON MPR_93.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.51_COR RECON MPR_96.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.52_COR RECON MPR_99.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.53_COR RECON MPR_102.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.54_COR RECON MPR_105.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.55_COR RECON MPR_108.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.56_COR RECON MPR_111.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.57_COR RECON MPR_114.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.58_COR RECON MPR_117.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.59_COR RECON MPR_120.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.6_AXIAL TSE T2_44.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.60_COR RECON MPR_123.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.61_COR RECON MPR_126.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.62_COR RECON MPR_129.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.7_AXIAL TSE T2_46.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.8_AXIAL TSE T2_48.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/14.9_AXT2FLAIR_32.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.1_AX T2_29.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.10_AX MPR RECONS_106.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.11_AX MPR RECONS_107.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.12_AX MPR RECONS_108.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.13_AX MPR RECONS_109.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.2_AX T2_30.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.3_AXT2FLAIR FS_19.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.4_mocoMEMPRAGE_ME_FOV220 RMS_121.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.5_mocoMEMPRAGE_ME_FOV220 RMS_122.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.6_mocoMEMPRAGE_ME_FOV220 RMS_123.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.7_mocoMEMPRAGE_ME_FOV220 RMS_124.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.8_mocoMEMPRAGE_ME_FOV220 RMS_125.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/15.9_AX MPR RECONS_105.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.1_AX_T2_38.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.10_AX_T2 FLAIR_fs_27.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.11_AX_T2 FLAIR_fs_29.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.12_SAG_T1 MPRAGE_78.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.13_SAG_T1 MPRAGE_79.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.14_SAG_T1 MPRAGE_80.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.15_SAG_T1 MPRAGE_116.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.16_SAG_T1 MPRAGE_117.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.17_SAG_T1 MPRAGE_118.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.18_SAG_T1 MPRAGE_119.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.19_COR_T2 (fast)_15.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.2_AX_T2_39.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.20_COR_T2 (fast)_16.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.21_COR_T2 (fast)_17.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.22_COR_T2 (fast)_18.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.23_COR_T2 (fast)_19.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.24_COR_T2 (fast)_20.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.25_COR_T2 (fast)_21.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.26_COR_T2 (fast)_22.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.27_COR_T2 (fast)_23.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.28_COR_T2 (fast)_24.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.29_COR_T2 (fast)_25.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.3_AX_T2_40.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.30_COR_T2 (fast)_26.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.31_COR_T2 (fast)_27.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.32_COR_T2 (fast)_28.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.33_COR_T2 (fast)_29.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.34_AX_T2 FLAIR_fs (fast)_24.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.35_AX_T2 FLAIR_fs (fast)_25.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.36_AX_T2 FLAIR_fs (fast)_26.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.37_AX MPGR RECON_118.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.38_AX MPGR RECON_120.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.39_AX MPGR RECON_122.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.4_AX_T2_41.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.40_AX MPGR RECON_124.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.41_AX MPGR RECON_126.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.42_AX MPGR RECON_128.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.43_AX MPGR RECON_130.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.44_AX MPGR RECON_132.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.45_AX MPGR RECON_134.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.46_AX MPGR RECON_136.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.47_AX MPGR RECON_138.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.48_AX MPGR RECON_140.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.49_COR MPRAGE RECON_72.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.5_AX_T2_42.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.50_COR MPRAGE RECON_75.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.51_COR MPRAGE RECON_78.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.52_COR MPRAGE RECON_81.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.53_COR MPRAGE RECON_84.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.54_COR MPRAGE RECON_87.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.55_COR MPRAGE RECON_90.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.56_COR MPRAGE RECON_93.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.57_COR MPRAGE RECON_96.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.58_COR MPRAGE RECON_99.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.59_COR MPRAGE RECON_102.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.6_AX_T2_43.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.60_COR MPRAGE RECON_105.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.61_COR MPRAGE RECON_108.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.62_COR MPRAGE RECON_111.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.63_COR MPRAGE RECON_114.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.64_COR MPRAGE RECON_117.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.65_COR MPRAGE RECON_120.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.66_COR MPRAGE RECON_123.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.67_COR MPRAGE RECON_126.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.68_COR MPRAGE RECON_129.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.69_COR MPRAGE RECON_132.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.7_AX_T2_44.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.70_AX FLAIR RECON_121.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.71_AX FLAIR RECON_124.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.72_AX FLAIR RECON_127.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.73_AX FLAIR RECON_130.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.74_AX FLAIR RECON_133.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.8_AX_T2_45.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/16.9_AX_T2_46.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/17.1_SAG_T1 MPRAGE_MPR_Ax_103.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/17.2_SAG_T1 MPRAGE_MPR_Ax_104.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/17.3_SAG_T1 MPRAGE_MPR_Ax_105.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/17.4_SAG_T1 MPRAGE_MPR_Ax_106.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/17.5_SAG_T1 MPRAGE_MPR_Ax_107.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/17.6_COR_T2_43.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/17.7_COR_T2_44.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/17.8_AX_T2_35.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/17.9_AX_T2_36.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.1_AX TSE T2 (TRIO PARAMETERS)_26.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.10_COR FSE T2 (ANGLED)_30.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.11_AX MPRAGE 2_72.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.12_AX MPRAGE 2_73.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.13_AX MPRAGE 2_74.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.14_AX MPRAGE 2_75.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.15_AX MPRAGE 2_76.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.16_COR MPRAGE 2_82.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.17_COR MPRAGE 2_83.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.18_COR MPRAGE 2_84.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.19_COR MPRAGE 2_85.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.2_AX TSE T2 (TRIO PARAMETERS)_27.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.20_COR MPRAGE 2_86.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.21_AX SPACE RECON_149.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.22_AX SPACE RECON_150.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.23_AX SPACE RECON_151.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.24_AX SPACE RECON_152.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.25_AX SPACE RECON_153.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.26_AX SPACE RECON_154.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.27_AX SPACE RECON_155.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.3_AX TSE T2 (TRIO PARAMETERS)_28.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.4_AX TSE T2 (TRIO PARAMETERS)_29.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.5_AX T2 FLAIR_17.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.6_COR FSE T2 (ANGLED)_26.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.7_COR FSE T2 (ANGLED)_27.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.8_COR FSE T2 (ANGLED)_28.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/18.9_COR FSE T2 (ANGLED)_29.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/19.1_AX TSE T2 (TRIO PARAMETERS)_46.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/19.2_AX TSE T2 (TRIO PARAMETERS)_47.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/19.3_AX T2 FLAIR_30.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/19.4_COR FSE T2 (ANGLED)_38.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.1_AX T2-BR 2.5mm_39.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.10_AX FLAIR MPR CORRECT_103.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.11_AX FLAIR MPR CORRECT_104.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.2_AX T2-BR 2.5mm_40.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.3_AX T2 FLAIR-fat sat_24.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.4_COR T2-BR 2.5mm_22.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.5_COR MPRAGE MPR_73.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.6_COR MPRAGE MPR_74.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.7_COR FLAIR MPR_73.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.8_COR FLAIR MPR_74.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/20.9_COR FLAIR MPR_75.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.1_AXFSET2_30.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.10_COR MPRAGE RECON_127.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.11_COR MPRAGE RECON_129.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.12_COR MPRAGE RECON_131.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.13_COR MPRAGE RECON_133.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.14_COR MPRAGE RECON_135.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.15_COR MPRAGE RECON_137.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.16_AX MPRAGE RECON_70.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.17_AX MPRAGE RECON_71.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.18_AX MPRAGE RECON_72.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.19_COR FLAIR RECON_122.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.2_AXFSET2_31.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.20_COR FLAIR RECON_124.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.21_COR FLAIR RECON_126.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.22_COR FLAIR RECON_128.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.23_COR FLAIR RECON_130.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.24_COR FLAIR RECON_132.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.25_COR FLAIR RECON_134.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.26_COR FLAIR RECON_136.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.27_COR FLAIR RECON_138.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.28_AX FLAIR RECON_80.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.29_AX FLAIR RECON_81.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.3_AXFSET2_32.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.30_AX FLAIR RECON_82.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.31_AX FLAIR RECON_83.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.32_AX FLAIR RECON_84.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.33_COR FSET2_19.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.34_COR FSET2_21.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.35_COR FSET2_23.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.36_COR FSET2_25.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.37_COR FSET2_27.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.4_COR FSET2_20.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.5_COR FSET2_22.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.6_COR FSET2_24.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.7_COR FSET2_26.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.8_COR FSET2_28.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/21.9_COR MPRAGE RECON_125.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.1_AX T2-BR 2.5mm OPTIMIZED 52410_37.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.10_COR T2-BR 2.5mm OPTIMIZED 52410_30.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.11_coronal reformat_54.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.12_coronal reformat_56.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.13_coronal reformat_58.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.14_coronal reformat_59.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.2_AX T2-BR 2.5mm OPTIMIZED 52410_38.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.3_AX T2-BR 2.5mm OPTIMIZED 52410_39.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.4_AX T2-BR 2.5mm OPTIMIZED 52410_40.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.5_AX T2-BR 2.5mm OPTIMIZED 52410_41.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.6_AX T2-BR 2.5mm OPTIMIZED 52410_42.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.7_COR T2-BR 2.5mm OPTIMIZED 52410_24.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.8_COR T2-BR 2.5mm OPTIMIZED 52410_26.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/22.9_COR T2-BR 2.5mm OPTIMIZED 52410_28.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/23.1_AX FSE T2_41.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/23.2_AX MPRAGE RECON_121.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.1_AX T2_29.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.10_COR T2_28.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.11_AX REFORMAT_116.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.12_AX REFORMAT_117.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.13_AX REFORMAT_118.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.14_AX REFORMAT_119.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.15_AX REFORMAT_120.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.16_COR REFORMAT_63.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.17_COR REFORMAT_65.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.18_COR REFORMAT_67.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.19_COR REFORMAT_69.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.2_AX T2_30.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.20_COR REFORMAT_71.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.21_COR REFORMAT_73.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.22_COR REFORMAT_75.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.3_COR T2_21.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.4_COR T2_22.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.5_COR T2_23.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.6_COR T2_24.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.7_COR T2_25.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.8_COR T2_26.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/24.9_COR T2_27.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/25.1_AX T2-BR 2.5mm OPTIMIZED 52410_38.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/25.2_AX T2-BR 2.5mm OPTIMIZED 52410_39.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/25.3_AX T2-BR 2.5mm OPTIMIZED 52410_40.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/25.4_AX T2-BR 2.5mm OPTIMIZED 52410_41.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.1_AX T2_45.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.10_COR T2_48.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.11_CORONAL REFORMAT_125.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.12_CORONAL REFORMAT_127.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.13_CORONAL REFORMAT_129.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.14_CORONAL REFORMAT_131.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.15_SPACE AXIAL REFORMAT_127.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.16_SPACE AXIAL REFORMAT_128.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.17_SPACE AXIAL REFORMAT_129.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.18_SPACE AXIAL REFORMAT_130.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.19_SPACE AXIAL REFORMAT_131.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.2_AX T2_46.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.20_SPACE AXIAL REFORMAT_132.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.21_SPACE AXIAL REFORMAT_133.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.22_SPACE AXIAL REFORMAT_134.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.23_SPACE AXIAL REFORMAT_135.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.24_SPACE CORONAL REFORMAT_116.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.25_SPACE CORONAL REFORMAT_117.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.26_SPACE CORONAL REFORMAT_118.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.27_SPACE CORONAL REFORMAT_119.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.28_SPACE CORONAL REFORMAT_120.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.29_SPACE CORONAL REFORMAT_121.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.3_AX T2_47.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.30_SPACE CORONAL REFORMAT_122.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.31_SPACE CORONAL REFORMAT_123.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.32_SPACE CORONAL REFORMAT_124.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.33_SPACE CORONAL REFORMAT_125.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.34_SPACE CORONAL REFORMAT_126.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.35_SPACE CORONAL REFORMAT_127.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.36_SPACE CORONAL REFORMAT_128.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.37_SPACE CORONAL REFORMAT_129.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.4_AX T2_48.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.5_COR T2_43.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.6_COR T2_44.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.7_COR T2_45.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.8_COR T2_46.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/26.9_COR T2_47.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/27.1_AX FSE T2_38.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/27.2_AX FSE T2_39.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/27.3_AX FSE T2_40.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/27.4_AX FSE T2_41.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/27.5_AX FSE T2_42.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/27.6_AX T2 FLAIR_19.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/27.7_AX T2 FLAIR_20.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/28.1_T2W_TSE CLEAR_12.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/28.2_T2W_TSE CLEAR_13.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/28.3_T2W_TSE CLEAR_14.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/28.4_T2W_TSE CLEAR_15.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/28.5_T2W_TSE CLEAR_16.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/28.6_T2W_FLAIR CLEAR_15.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/28.7_T2W_FLAIR CLEAR_16.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.1_T2W_TSE CLEAR_11.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.10_COR_T2W_TSE_4mm_14.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.11_COR_T2W_TSE_4mm_16.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.12_COR_T2W_TSE_4mm_19.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.13_COR_T2W_TSE_4mm_20.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.14_COR_T2W_TSE_4mm_21.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.15_COR_T2W_TSE_4mm_22.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.2_T2W_TSE CLEAR_12.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.3_T2W_TSE CLEAR_13.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.4_T2W_TSE CLEAR_14.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.5_T2W_TSE CLEAR_15.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.6_T2W_TSE CLEAR_16.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.7_T2W_FLAIR CLEAR_15.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.8_T2W_FLAIR CLEAR_16.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/29.9_COR_T2W_TSE_4mm_13.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.1_T2 TSE Axial (REPEAT)_39.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.10_COR MPRAGE RECON_138.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.11_COR MPRAGE RECON_139.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.12_COR MPRAGE RECON_140.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.13_AX MPRAGE RECON_100.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.14_AX MPRAGE RECON_101.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.15_AX MPRAGE RECON_102.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.16_AX MPRAGE RECON_103.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.17_AX MPRAGE RECON_104.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.18_AX MPRAGE RECON_105.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.19_AX MPRAGE RECON_106.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.2_T2 TSE Axial (REPEAT)_40.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.20_COR FLAIR RECON_56.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.21_COR FLAIR RECON_57.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.3_T2 TSE Axial (REPEAT)_41.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.4_T2 TSE Axial (REPEAT)_42.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.5_T2 TSE COR_42.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.6_T2 TSE COR_43.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.7_T2 TSE COR_44.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.8_COR MPRAGE RECON_136.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/30.9_COR MPRAGE RECON_137.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/31.1_COR T2_24.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/31.2_COR T2_25.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/31.3_COR T2_26.jpg  
  inflating: /home/ubuntu/data/PVNHtrain/31.4_COR T2_27.jpg  
Archive:  /home/ubuntu/data/PVNHval.zip
  inflating: /home/ubuntu/data/PVNHval/10.1_AX_T2 (fast)_33.jpg  
  inflating: /home/ubuntu/data/PVNHval/10.2_AX_T2 (fast)_35.jpg  
  inflating: /home/ubuntu/data/PVNHval/10.3_AX_T2 (fast)_37.jpg  
  inflating: /home/ubuntu/data/PVNHval/10.4_AX_T2 FLAIR_fs (fast)_36.jpg  
  inflating: /home/ubuntu/data/PVNHval/10.5_AX_T2 FLAIR_fs (fast)_37.jpg  
  inflating: /home/ubuntu/data/PVNHval/10.6_COR_T2 (fast)_21.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.1_AX T2_31.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.10_AXT2FLAIR FS_27.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.100_COR MPR RECONS_130.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.101_COR MPR RECONS_131.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.102_COR MPR RECONS_132.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.103_COR MPR RECONS_133.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.104_COR MPR RECONS_134.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.105_COR MPR RECONS_135.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.106_COR MPR RECONS_136.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.107_COR MPR RECONS_137.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.108_COR MPR RECONS_138.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.109_COR MPR RECONS_139.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.11_COR T2_21.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.110_COR MPR RECONS_140.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.111_COR MPR RECONS_141.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.112_COR MPR RECONS_142.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.113_COR MPR RECONS_143.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.114_COR MPR RECONS_144.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.115_COR MPR RECONS_145.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.116_COR MPR RECONS_146.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.117_COR MPR RECONS_147.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.118_COR MPR RECONS_148.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.119_COR MPR RECONS_149.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.12_COR T2_23.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.13_COR T2_25.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.14_COR T2_27.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.15_COR T2_29.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.16_COR T2_31.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.17_COR T2_33.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.18_COR T2_35.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.19_COR T2_37.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.2_AX T2_33.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.20_COR T2_39.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.21_AX MPR RECONS_124.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.22_AX MPR RECONS_127.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.23_AX MPR RECONS_130.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.24_AX MPR RECONS_133.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.25_AX MPR RECONS_136.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.26_AX MPR RECONS_139.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.27_AX MPR RECONS_142.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.28_COR MPR RECONS_66.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.29_COR MPR RECONS_70.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.3_AX T2_35.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.30_COR MPR RECONS_74.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.31_COR MPR RECONS_78.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.32_COR MPR RECONS_82.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.33_COR MPR RECONS_86.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.34_COR MPR RECONS_90.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.35_COR MPR RECONS_94.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.36_COR MPR RECONS_98.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.37_COR MPR RECONS_102.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.38_COR MPR RECONS_106.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.39_COR MPR RECONS_111.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.4_AX T2_37.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.40_COR MPR RECONS_116.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.41_COR MPR RECONS_121.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.42_COR MPR RECONS_126.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.43_COR MPR RECONS_129.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.44_AX MPR RECONS_109.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.45_AX MPR RECONS_110.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.46_AX MPR RECONS_111.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.47_AX MPR RECONS_112.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.48_AX MPR RECONS_113.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.49_AX MPR RECONS_114.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.5_AX T2_39.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.50_AX MPR RECONS_115.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.51_AX MPR RECONS_116.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.52_AX MPR RECONS_117.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.53_AX MPR RECONS_118.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.54_AX MPR RECONS_119.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.55_AX MPR RECONS_120.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.56_AX MPR RECONS_121.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.57_AX MPR RECONS_122.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.58_AX MPR RECONS_123.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.59_AX MPR RECONS_125.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.6_AX T2_41.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.60_AX MPR RECONS_126.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.61_AX MPR RECONS_128.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.62_AX MPR RECONS_129.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.63_AX MPR RECONS_131.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.64_AX MPR RECONS_132.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.65_AX MPR RECONS_134.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.66_AX MPR RECONS_135.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.67_AX MPR RECONS_137.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.68_AX MPR RECONS_138.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.69_AX MPR RECONS_140.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.7_AX T2_43.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.70_AX MPR RECONS_141.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.71_AX MPR RECONS_143.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.72_AX MPR RECONS_144.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.73_COR MPR RECONS_67.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.74_COR MPR RECONS_69.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.75_COR MPR RECONS_72.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.76_COR MPR RECONS_75.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.77_COR MPR RECONS_77.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.78_COR MPR RECONS_80.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.79_COR MPR RECONS_84.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.8_AXT2FLAIR FS_25.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.80_COR MPR RECONS_88.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.81_COR MPR RECONS_91.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.82_COR MPR RECONS_93.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.83_COR MPR RECONS_95.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.84_COR MPR RECONS_97.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.85_COR MPR RECONS_99.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.86_COR MPR RECONS_101.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.87_COR MPR RECONS_103.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.88_COR MPR RECONS_105.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.89_COR MPR RECONS_107.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.9_AXT2FLAIR FS_26.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.90_COR MPR RECONS_109.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.91_COR MPR RECONS_112.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.92_COR MPR RECONS_114.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.93_COR MPR RECONS_118.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.94_COR MPR RECONS_120.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.95_COR MPR RECONS_122.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.96_COR MPR RECONS_123.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.97_COR MPR RECONS_125.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.98_COR MPR RECONS_127.jpg  
  inflating: /home/ubuntu/data/PVNHval/7.99_COR MPR RECONS_128.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.1_AX_T2 (fast)_31.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.10_SAG_T1 MPRAGE (fast)_100.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.11_AX RECON_82.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.12_AX RECON_85.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.13_AX RECON_88.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.14_AX RECON_91.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.15_AX RECON_94.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.16_AX RECON_97.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.17_AX RECON_100.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.18_AX RECON_103.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.19_AX RECON_106.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.2_AX_T2 (fast)_33.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.20_AX RECON_109.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.21_COR RECON_56.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.22_COR RECON_60.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.23_COR RECON_64.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.24_COR RECON_68.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.25_COR RECON_72.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.26_COR RECON_76.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.27_COR RECON_80.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.28_COR RECON_84.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.29_COR RECON_88.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.3_AX_T2 (fast)_35.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.30_COR RECON_92.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.31_COR_T2 (fast)_17.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.32_COR_T2 (fast)_18.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.33_COR_T2 (fast)_19.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.34_COR_T2 (fast)_20.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.35_COR_T2 (fast)_21.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.36_COR_T2 (fast)_22.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.37_COR_T2 (fast)_23.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.38_COR_T2 (fast)_24.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.39_COR_T2 (fast)_25.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.4_AX_T2 FLAIR_fs (fast)_32.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.40_COR_T2 (fast)_26.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.41_COR_T2 (fast)_27.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.42_COR_T2 (fast)_28.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.43_COR_T2 (fast)_29.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.44_COR_T2 (fast)_30.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.45_COR_T2 (fast)_31.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.5_AX_T2 FLAIR_fs (fast)_33.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.6_AX_T2 FLAIR_fs (fast)_34.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.7_AX_T2 FLAIR_fs (fast)_35.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.8_SAG_T1 MPRAGE (fast)_65.jpg  
  inflating: /home/ubuntu/data/PVNHval/8.9_SAG_T1 MPRAGE (fast)_98.jpg  
  inflating: /home/ubuntu/data/PVNHval/9.1_1.2.840.113619.2.176.3596.6358506.7084.1131056254.598_15.jpg  
  inflating: /home/ubuntu/data/PVNHval/9.2_1.2.840.113619.2.176.3596.6358506.7084.1131056254.599_16.jpg  
  inflating: /home/ubuntu/data/PVNHval/9.3_1.2.840.113619.2.176.3596.6358506.7084.1131056254.600_17.jpg  
  inflating: /home/ubuntu/data/PVNHval/9.4_1.2.840.113619.2.176.3596.6358506.7084.1131056254.921_16.jpg  
  inflating: /home/ubuntu/data/PVNHval/9.5_1.2.840.113619.2.176.3596.6358506.7084.1131056254.910_17.jpg  

Paths to original and processed images

In [4]:
# Path to the folder with the original images
pathtoimagesControltrain = './data/Controltrain/'
pathtoimagesControlval = './data/Controlval/'

pathtoimagesPVNHtrain = './data/PVNHtrain/'
pathtoimagesPVNHval = './data/PVNHval/'


# Create directories to save the processed images
! mkdir ~/data/processedControltrain 
! mkdir ~/data/processedControlval

! mkdir ~/data/processedPVNHtrain 
! mkdir ~/data/processedPVNHval


# Path to the folder with the processed images
pathtoprocessedimagesControltrain = './data/processedControltrain/'
pathtoprocessedimagesControlval = './data/processedControlval/'

pathtoprocessedimagesPVNHtrain = './data/processedPVNHtrain/'
pathtoprocessedimagesPVNHval = './data/processedPVNHval/'


# Create directories to save the augmented images for the train datasets
! mkdir ~/data/augmentedControltrain 
! mkdir ~/data/augmentedPVNHtrain 


# Create the directory to save the augmented images
pathtoaugmentedimagesControltrain = './data/augmentedControltrain/'
pathtoaugmentedimagesPVNHtrain = './data/augmentedPVNHtrain/'

Read in, preprocess, and augment Controltrain images

In [5]:
# Define the image size
image_size = (512, 512)

# Read in the training images
Controltrain_dir = pathtoimagesControltrain
Controltrain_files = os.listdir(Controltrain_dir)
# For each image
for f in Controltrain_files:
    # Open the image
    img = Image.open(Controltrain_dir + f)
    # Resize the image so that it has a size 512x512
    img = img.resize(image_size)
    # Transform into a numpy array with no page number and save it into the preprocessed folder
    img_arr = np.array(img)
    img_arr[462:512, 0:100, :] = np.mean(img_arr[452:462, 0:100, :])
    processed_img = Image.fromarray(img_arr, 'RGB')
    processed_img_name = './data/processedControltrain/'+'processed'+str(np.random.randint(low=1, high=1e8))+ \
    str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e4, high=1e6))+ \
    str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e5, high=1e8))+ \
    str(np.random.randint(low=1e2, high=1e7))+str(np.random.randint(low=1e3, high=1e5))+ \
    str(np.random.randint(low=1e2, high=1e8))+'.jpg'
    processed_img.save(processed_img_name)
In [6]:
# Define the characteristics for data augmentation
datagen = ImageDataGenerator(
        rotation_range=25,
        width_shift_range=0.15,
        height_shift_range=0.15,
        shear_range=0.15,
        zoom_range=0.25,
        horizontal_flip=True,
        fill_mode='nearest')

# Path to images
ProcessedControltrain_files = os.listdir(pathtoprocessedimagesControltrain)

# Augment the images
ProcessedControltrain_dir = pathtoprocessedimagesControltrain
for f in ProcessedControltrain_files:
    img = load_img(ProcessedControltrain_dir + f)
    x = img_to_array(img)
    x = x.reshape((1,) + x.shape)

    # Save the augmented images into a directory of augmented images
    i = 0
    for batch in datagen.flow(x, batch_size=1,
                              save_to_dir=pathtoaugmentedimagesControltrain, 
                              save_prefix='augmented'+str(np.random.randint(low=1, high=1e8))+str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e4, high=1e6))+
                              str(np.random.randint(low=1e5, high=1e8))+str(np.random.randint(low=1e2, high=1e7))+str(np.random.randint(low=1e3, high=1e5))+str(np.random.randint(low=1e2, high=1e8)), 
                              save_format='jpg'):
        i += 1
        if i > 5:
            break  # Break the cycle after having created 6 augmented images per image, otherwise the generator would loop indefinitely

Read in and preprocess Controlval images

In [7]:
# Define the image size
image_size = (512, 512)

# Read in the validation images
Controlval_dir = pathtoimagesControlval
Controlval_files = os.listdir(Controlval_dir)
# For each image
for f in Controlval_files:
    # Open the image
    img = Image.open(Controlval_dir + f)
    # Resize the image so that it has a size 512x512
    img = img.resize(image_size)
    # Transform into a numpy array with no page number and save it into the preprocessed folder
    img_arr = np.array(img)
    img_arr[462:512, 0:100, :] = np.mean(img_arr[452:462, 0:100, :])
    processed_img = Image.fromarray(img_arr, 'RGB')
    processed_img_name = './data/processedControlval/'+'processed'+str(np.random.randint(low=1, high=1e8))+ \
    str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e4, high=1e6))+ \
    str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e5, high=1e8))+ \
    str(np.random.randint(low=1e2, high=1e7))+str(np.random.randint(low=1e3, high=1e5))+ \
    str(np.random.randint(low=1e2, high=1e8))+'.jpg'
    processed_img.save(processed_img_name)

Read in, preprocess, and augment PVNHtrain images

In [8]:
# Define the image size
image_size = (512, 512)

# Read in the training images
PVNHtrain_dir = pathtoimagesPVNHtrain
PVNHtrain_files = os.listdir(PVNHtrain_dir)
# For each image
for f in PVNHtrain_files:
    # Open the image
    img = Image.open(PVNHtrain_dir + f)
    # Resize the image so that it has a size 512x512
    img = img.resize(image_size)
    # Transform into a numpy array with no page number and save it into the preprocessed folder
    img_arr = np.array(img)
    img_arr[462:512, 0:100, :] = np.mean(img_arr[452:462, 0:100, :])
    processed_img = Image.fromarray(img_arr, 'RGB')
    processed_img_name = './data/processedPVNHtrain/'+'processed'+str(np.random.randint(low=1, high=1e8))+ \
    str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e4, high=1e6))+ \
    str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e5, high=1e8))+ \
    str(np.random.randint(low=1e2, high=1e7))+str(np.random.randint(low=1e3, high=1e5))+ \
    str(np.random.randint(low=1e2, high=1e8))+'.jpg'
    processed_img.save(processed_img_name)    
In [9]:
# Define the characteristics for data augmentation
datagen = ImageDataGenerator(
        rotation_range=25,
        width_shift_range=0.15,
        height_shift_range=0.15,
        shear_range=0.15,
        zoom_range=0.25,
        horizontal_flip=True,
        fill_mode='nearest')

# Path to images
ProcessedPVNHtrain_files = os.listdir(pathtoprocessedimagesPVNHtrain)

# Augment the images
ProcessedPVNHtrain_dir = pathtoprocessedimagesPVNHtrain
for f in ProcessedPVNHtrain_files:
    img = load_img(ProcessedPVNHtrain_dir + f)
    x = img_to_array(img)
    x = x.reshape((1,) + x.shape)

    # Save the augmented images into a directory of augmented images
    i = 0
    for batch in datagen.flow(x, batch_size=1,
                              save_to_dir=pathtoaugmentedimagesPVNHtrain, save_prefix='augmented'+str(np.random.randint(low=1e5, high=1e8))+str(np.random.randint(low=1e3, high=1e5))+str(np.random.randint(low=1e2, high=1e7))+
                              str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e2, high=1e8))+str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e4, high=1e6))
                              , save_format='jpg'):
        i += 1
        if i > 5:
            break  # Break the cycle after having created 6 augmented images per image, otherwise the generator would loop indefinitely

Read in and preprocess PVNHval images

In [10]:
# Define the image size
image_size = (512, 512)

# Read in the validation images
PVNHval_dir = pathtoimagesPVNHval
PVNHval_files = os.listdir(PVNHval_dir)
# For each image
for f in PVNHval_files:
    # Open the image
    img = Image.open(PVNHval_dir + f)
    # Resize the image so that it has a size 512x512
    img = img.resize(image_size)
    # Transform into a numpy array with no page number and save it into the preprocessed folder
    img_arr = np.array(img)
    img_arr[462:512, 0:100, :] = np.mean(img_arr[452:462, 0:100, :])
    processed_img = Image.fromarray(img_arr, 'RGB')
    processed_img_name = './data/processedPVNHval/'+'processed'+str(np.random.randint(low=1, high=1e8))+ \
    str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e4, high=1e6))+ \
    str(np.random.randint(low=1e4, high=1e6))+str(np.random.randint(low=1e5, high=1e8))+ \
    str(np.random.randint(low=1e2, high=1e7))+str(np.random.randint(low=1e3, high=1e5))+ \
    str(np.random.randint(low=1e2, high=1e8))+'.jpg'
    processed_img.save(processed_img_name) 

SECOND PART: IMPORTATION OF FINAL DATA

Path to the final images

In [11]:
# Create directories for the final images
!mkdir ~/data/FinalControltrain 
!mkdir ~/data/FinalControlval 

!mkdir ~/data/FinalPVNHtrain 
!mkdir ~/data/FinalPVNHval 
In [12]:
# Copy all processed images and augmented images to the final folders
!cp ./data/processedControltrain/* ./data/FinalControltrain/
!cp ./data/augmentedControltrain/* ./data/FinalControltrain/
!cp ./data/processedControlval/* ./data/FinalControlval/

!cp ./data/processedPVNHtrain/* ./data/FinalPVNHtrain/
!cp ./data/augmentedPVNHtrain/* ./data/FinalPVNHtrain/
!cp ./data/processedPVNHval/* ./data/FinalPVNHval/
In [13]:
## Path to final images
pathtofinalControltrain = './data/FinalControltrain/'
pathtofinalControlval = './data/FinalControlval/'

pathtofinalPVNHtrain = './data/FinalPVNHtrain/'
pathtofinalPVNHval = './data/FinalPVNHval/'

Import images and labels for the train set

In [14]:
## CONTROLS

# Define the image size
image_size = (512, 512)

# Read in the training images for controls
Controltrain_images = []
Controltrain_dir = pathtofinalControltrain
Controltrain_files = os.listdir(Controltrain_dir)
# For each image
for f in Controltrain_files:
    # Open the image
    img = Image.open(Controltrain_dir + f)
    # Resize the image so that it has a size 512x512
    img = img.resize(image_size)
    # Transform into a numpy array
    img_arr = np.array(img)
    # Add the image to the array of images      
    Controltrain_images.append(img_arr)

# After having transformed all images, transform the list into a numpy array  
Controltrain_X = np.array(Controltrain_images)

# Create an array of labels (0 for controls)
Controltrain_y = np.array([[0]*Controltrain_X.shape[0]]).T




## PVNH

# Read in the training images for PVNH
PVNHtrain_images = []
PVNHtrain_dir = pathtofinalPVNHtrain
PVNHtrain_files = os.listdir(PVNHtrain_dir)
# For each image
for f in PVNHtrain_files:
    # Open the image
    img = Image.open(PVNHtrain_dir + f)
    # Resize the image so that it has a size 512x512
    img = img.resize(image_size)
    # Transform into a numpy array
    img_arr = np.array(img)
    # Add the image to the array of images      
    PVNHtrain_images.append(img_arr)

# After having transformed all images, transform the list into a numpy array  
PVNHtrain_X = np.array(PVNHtrain_images)

# Create an array of labels (2 for PVNH)
PVNHtrain_y = np.array([[1]*PVNHtrain_X.shape[0]]).T




## MERGE CONTROLS AND PVNH

# Train merge files
train_X = np.concatenate([Controltrain_X, PVNHtrain_X])
train_y = np.vstack((Controltrain_y, PVNHtrain_y))

# GPU expects values to be 32-bit floats
train_X = train_X.astype(np.float32)

# Rescale the pixel values to be between 0 and 1
train_X /= 255.
In [15]:
# Shuffle in unison the train_X and the train_y array (123 is just a random number for reproducibility)
shuffled_train_X, shuffled_train_y = shuffle(train_X, train_y, random_state=123)

# Transform outcome to one-hot encoding
shuffled_train_y = to_categorical(shuffled_train_y)
In [16]:
# Make sure that the dimensions are as expected
shuffled_train_X.shape
Out[16]:
(5305, 512, 512, 3)
In [17]:
# Example of an image to make sure they were converted right
plt.imshow(shuffled_train_X[0])
plt.grid(b=None)
plt.xticks([])
plt.yticks([])
plt.show()
In [18]:
# Make sure that the dimensions are as expected
shuffled_train_y.shape
Out[18]:
(5305, 2)
In [19]:
# Make sure that the label is correct for the image
shuffled_train_y[0]
Out[19]:
array([0., 1.], dtype=float32)

Import images and labels for the validation set

In [20]:
## VALIDATION

# Define the image size
image_size = (512, 512)

# Read in the validation images for controls
Controlval_images = []
Controlval_dir = pathtofinalControlval
Controlval_files = os.listdir(Controlval_dir)
# For each image
for f in Controlval_files:
    # Open the image
    img = Image.open(Controlval_dir + f)
    # Resize the image so that it has a size 512x512
    img = img.resize(image_size)
    # Transform into a numpy array
    img_arr = np.array(img)
    # Add the image to the array of images      
    Controlval_images.append(img_arr)

# After having transformed all images, transform the list into a numpy array  
Controlval_X = np.array(Controlval_images)

# Create an array of labels (0 for controls)
Controlval_y = np.array([[0]*Controlval_X.shape[0]]).T




## PVNH

# Read in the validation images for PVNH
PVNHval_images = []
PVNHval_dir = pathtofinalPVNHval
PVNHval_files = os.listdir(PVNHval_dir)
# For each image
for f in PVNHval_files:
    # Open the image
    img = Image.open(PVNHval_dir + f)
    # Resize the image so that it has a size 512x512
    img = img.resize(image_size)
    # Transform into a numpy array
    img_arr = np.array(img)
    # Add the image to the array of images      
    PVNHval_images.append(img_arr)

# After having transformed all images, transform the list into a numpy array  
PVNHval_X = np.array(PVNHval_images)

# Create an array of labels (2 for PVNH)
PVNHval_y = np.array([[1]*PVNHval_X.shape[0]]).T




## MERGE CONTROLS AND PVNH

# Val merge files
val_X = np.concatenate([Controlval_X, PVNHval_X])
val_y = np.vstack((Controlval_y, PVNHval_y))

# GPU expects pixel values to be 32-bit floats
val_X = val_X.astype(np.float32)

# Rescale the pixel values to be between 0 and 1
val_X /= 255.
In [21]:
# Shuffle in unison the val_X and the val_y array (123 is just a random number for reproducibility)
shuffled_val_X, shuffled_val_y = shuffle(val_X, val_y, random_state=123)

# Transform outcome to one-hot encoding
shuffled_val_y = to_categorical(shuffled_val_y)
In [22]:
# Make sure that the dimensions are as expected
shuffled_val_X.shape
Out[22]:
(334, 512, 512, 3)
In [23]:
# Example of an image to make sure they were converted right
plt.imshow(shuffled_val_X[0])
plt.grid(b=None)
plt.xticks([])
plt.yticks([])
plt.show()
In [24]:
# Make sure that the dimensions are as expected
shuffled_val_y.shape
Out[24]:
(334, 2)
In [25]:
# Make sure that the label is correct for the image
shuffled_val_y[0]
Out[25]:
array([1., 0.], dtype=float32)

THIRD PART: EVALUATE NEURAL NETWORKS

CNNMCD (CNN architecture created by the authors)

In [26]:
## Define the initial input
initial_input = Input(shape = train_X.shape[1:])

## Add convolutional and max pooling layers
x = Conv2D(filters = 64, kernel_size = (3,3), padding = 'same')(initial_input)
x = MaxPooling2D(pool_size = (2, 2), padding = 'same')(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = Conv2D(filters = 64, kernel_size = (3,3), padding = 'same', activation='relu')(x)
x = MaxPooling2D(pool_size = (2, 2), padding = 'same')(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)

## Add inception block
# Convolution 1x1
conv1 = Conv2D(filters=64, kernel_size=(1,1), padding='same', activation='relu')(x)
# Convolution 3x3
conv3 = Conv2D(filters=96, kernel_size=(1,1), padding='same', activation='relu')(x)
conv3 = Conv2D(filters=128, kernel_size=(3,3), padding='same', activation='relu')(conv3)
# Convolution 5x5
conv5 = Conv2D(filters=64, kernel_size=(1,1), padding='same', activation='relu')(x)
conv5 = Conv2D(filters=128, kernel_size=(5,5), padding='same', activation='relu')(conv5)
# Max Pooling 3x3
pool = MaxPooling2D(pool_size=(3,3), strides=(1,1), padding='same')(x)
pool = Conv2D(filters=64, kernel_size=(3,3), padding='same', activation='relu')(pool)    
# Concatenate filters
x = concatenate([conv1, conv3, conv5, pool], axis=-1)

## Add convolutional and max pooling layers
x = Conv2D(filters = 128, kernel_size = (3,3), padding = 'same')(initial_input)
x = MaxPooling2D(pool_size = (2, 2), padding = 'same')(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = Conv2D(filters = 256, kernel_size = (3,3), padding = 'same', activation='relu')(x)
x = MaxPooling2D(pool_size = (2, 2), padding = 'same')(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = Conv2D(filters = 256, kernel_size = (3,3), padding = 'same', activation='relu')(x)
x = MaxPooling2D(pool_size = (2, 2), padding = 'same')(x)

## Add inception block
# Convolution 1x1
conv1 = Conv2D(filters=128, kernel_size=(1,1), padding='same', activation='relu')(x)
# Convolution 3x3
conv3 = Conv2D(filters=128, kernel_size=(1,1), padding='same', activation='relu')(x)
conv3 = Conv2D(filters=256, kernel_size=(3,3), padding='same', activation='relu')(conv3)
# Convolution 5x5
conv5 = Conv2D(filters=64, kernel_size=(1,1), padding='same', activation='relu')(x)
conv5 = Conv2D(filters=128, kernel_size=(5,5), padding='same', activation='relu')(conv5)
# Max Pooling 3x3
pool = MaxPooling2D(pool_size=(3,3), strides=(1,1), padding='same')(x)
pool = Conv2D(filters=64, kernel_size=(3,3), padding='same', activation='relu')(pool)    
# Concatenate filters
x = concatenate([conv1, conv3, conv5, pool], axis=-1)

## Add inception block
# Convolution 1x1
conv1 = Conv2D(filters=128, kernel_size=(1,1), padding='same', activation='relu')(x)
# Convolution 3x3
conv3 = Conv2D(filters=128, kernel_size=(1,1), padding='same', activation='relu')(x)
conv3 = Conv2D(filters=256, kernel_size=(3,3), padding='same', activation='relu')(conv3)
# Convolution 5x5
conv5 = Conv2D(filters=64, kernel_size=(1,1), padding='same', activation='relu')(x)
conv5 = Conv2D(filters=128, kernel_size=(5,5), padding='same', activation='relu')(conv5)
# Max Pooling 3x3
pool = MaxPooling2D(pool_size=(3,3), strides=(1,1), padding='same')(x)
pool = Conv2D(filters=64, kernel_size=(3,3), padding='same', activation='relu')(pool)    
# Concatenate filters
x = concatenate([conv1, conv3, conv5, pool], axis=-1)

## Add inception block
# Convolution 1x1
conv1 = Conv2D(filters=128, kernel_size=(1,1), padding='same', activation='relu')(x)
# Convolution 3x3
conv3 = Conv2D(filters=128, kernel_size=(1,1), padding='same', activation='relu')(x)
conv3 = Conv2D(filters=256, kernel_size=(3,3), padding='same', activation='relu')(conv3)
# Convolution 5x5
conv5 = Conv2D(filters=64, kernel_size=(1,1), padding='same', activation='relu')(x)
conv5 = Conv2D(filters=128, kernel_size=(5,5), padding='same', activation='relu')(conv5)
# Max Pooling 3x3
pool = MaxPooling2D(pool_size=(3,3), strides=(1,1), padding='same')(x)
pool = Conv2D(filters=64, kernel_size=(3,3), padding='same', activation='relu')(pool)    
# Concatenate filters
x = concatenate([conv1, conv3, conv5, pool], axis=-1)

## Add inception block
# Convolution 1x1
conv1 = Conv2D(filters=128, kernel_size=(1,1), padding='same', activation='relu')(x)
# Convolution 3x3
conv3 = Conv2D(filters=128, kernel_size=(1,1), padding='same', activation='relu')(x)
conv3 = Conv2D(filters=256, kernel_size=(3,3), padding='same', activation='relu')(conv3)
# Convolution 5x5
conv5 = Conv2D(filters=64, kernel_size=(1,1), padding='same', activation='relu')(x)
conv5 = Conv2D(filters=128, kernel_size=(5,5), padding='same', activation='relu')(conv5)
# Max Pooling 3x3
pool = MaxPooling2D(pool_size=(3,3), strides=(1,1), padding='same')(x)
pool = Conv2D(filters=64, kernel_size=(3,3), padding='same', activation='relu')(pool)    
# Concatenate filters
x = concatenate([conv1, conv3, conv5, pool], axis=-1)

## Add global average pooling
x = GlobalAveragePooling2D()(x)

## Add the fully-connected layers
x = Dense(units=516, activation='relu')(x)
x = Dropout(rate=0.5)(x)
x = Dense(units=256, activation='relu')(x)
x = Dropout(rate=0.5)(x)
x = Dense(units=64, activation='relu')(x)
predictions = Dense(units=2, activation='softmax')(x)

# Define the model to be trained
model = Model(inputs=initial_input, outputs=predictions)

# Define the neural network optimizer
opt = Adam(lr = 0.0001)

# Compile the model
model.compile(optimizer = opt, loss = 'categorical_crossentropy', metrics = ['accuracy'])

# Fit the model in the training set
historyCNNMCD = model.fit(shuffled_train_X, shuffled_train_y, validation_data = [shuffled_val_X, shuffled_val_y], epochs = 50, batch_size = 32)


print('\n')
print('\n')
# AUC in train and validation set
auc_trainCNNMCD = roc_auc_score(shuffled_train_y, model.predict(shuffled_train_X))
print('The AUC in the train set is {:.4f}.'.format(auc_trainCNNMCD))
print('\n')
print('\n')
auc_validCNNMCD = roc_auc_score(shuffled_val_y, model.predict(shuffled_val_X))
print('The AUC in the validation set is {:.4f}.'.format(auc_validCNNMCD))

print('\n')
print('\n')
print('\n')
print('\n')

# Figure size and colors
mpl.rcParams['figure.figsize'] = (20,24)
plt.rcParams['axes.facecolor']='white'
plt.rcParams['figure.facecolor']='lightgreen'
plt.rcParams['figure.edgecolor']='black'

# Plot history of loss during training
plt.plot(historyCNNMCD.history['loss'], label='Train', color='red')
plt.plot(historyCNNMCD.history['val_loss'], label='Validation', color='blue')
plt.title('Loss in train and validation set', size=30)
plt.xlabel('Epoch', size=24)
plt.ylabel('Categorical cross-entropy loss', size=24)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(fontsize=20)
plt.ylim(ymin=0, ymax=5)
plt.grid(b=None)
plt.show()

print('\n')
print('\n')
print('\n')
print('\n')

# Plot history of accuracy
plt.plot(historyCNNMCD.history['accuracy'], label='Train', color='red')
plt.plot(historyCNNMCD.history['val_accuracy'], label='Validation', color='blue')
plt.title('Accuracy in train and validation set', size=30)
plt.xlabel('Epoch', size=24)
plt.ylabel('Accuracy', size=24)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(fontsize=20)
plt.ylim(ymin=0, ymax=1.1)
plt.grid(b=None)
plt.show()
Train on 5305 samples, validate on 334 samples
Epoch 1/50
5305/5305 [==============================] - 119s 22ms/sample - loss: 0.6915 - accuracy: 0.5233 - val_loss: 0.6941 - val_accuracy: 0.4760
Epoch 2/50
5305/5305 [==============================] - 106s 20ms/sample - loss: 0.6137 - accuracy: 0.6598 - val_loss: 0.7159 - val_accuracy: 0.4701
Epoch 3/50
5305/5305 [==============================] - 107s 20ms/sample - loss: 0.4646 - accuracy: 0.7764 - val_loss: 0.5450 - val_accuracy: 0.7515
Epoch 4/50
5305/5305 [==============================] - 106s 20ms/sample - loss: 0.3904 - accuracy: 0.8260 - val_loss: 0.5770 - val_accuracy: 0.6707
Epoch 5/50
5305/5305 [==============================] - 105s 20ms/sample - loss: 0.3383 - accuracy: 0.8573 - val_loss: 0.6988 - val_accuracy: 0.6527
Epoch 6/50
5305/5305 [==============================] - 106s 20ms/sample - loss: 0.2804 - accuracy: 0.8854 - val_loss: 1.0580 - val_accuracy: 0.5509
Epoch 7/50
5305/5305 [==============================] - 105s 20ms/sample - loss: 0.2172 - accuracy: 0.9108 - val_loss: 0.8530 - val_accuracy: 0.6317
Epoch 8/50
5305/5305 [==============================] - 105s 20ms/sample - loss: 0.1723 - accuracy: 0.9289 - val_loss: 1.0924 - val_accuracy: 0.7006
Epoch 9/50
5305/5305 [==============================] - 105s 20ms/sample - loss: 0.1521 - accuracy: 0.9406 - val_loss: 0.8233 - val_accuracy: 0.6407
Epoch 10/50
5305/5305 [==============================] - 104s 20ms/sample - loss: 0.1536 - accuracy: 0.9353 - val_loss: 0.9053 - val_accuracy: 0.6856
Epoch 11/50
5305/5305 [==============================] - 101s 19ms/sample - loss: 0.0853 - accuracy: 0.9695 - val_loss: 1.3026 - val_accuracy: 0.7006
Epoch 12/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 0.0633 - accuracy: 0.9776 - val_loss: 2.0550 - val_accuracy: 0.5000
Epoch 13/50
5305/5305 [==============================] - 102s 19ms/sample - loss: 0.0759 - accuracy: 0.9732 - val_loss: 1.5465 - val_accuracy: 0.7216
Epoch 14/50
5305/5305 [==============================] - 101s 19ms/sample - loss: 0.0620 - accuracy: 0.9783 - val_loss: 1.2577 - val_accuracy: 0.7515
Epoch 15/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 0.0541 - accuracy: 0.9815 - val_loss: 1.3030 - val_accuracy: 0.6976
Epoch 16/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 0.0472 - accuracy: 0.9853 - val_loss: 2.4095 - val_accuracy: 0.5868
Epoch 17/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 0.0322 - accuracy: 0.9883 - val_loss: 1.6304 - val_accuracy: 0.6856
Epoch 18/50
5305/5305 [==============================] - 101s 19ms/sample - loss: 0.0254 - accuracy: 0.9919 - val_loss: 2.0759 - val_accuracy: 0.7575
Epoch 19/50
5305/5305 [==============================] - 102s 19ms/sample - loss: 0.0409 - accuracy: 0.9866 - val_loss: 1.5453 - val_accuracy: 0.7545
Epoch 20/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 0.0219 - accuracy: 0.9917 - val_loss: 2.2734 - val_accuracy: 0.6826
Epoch 21/50
5305/5305 [==============================] - 102s 19ms/sample - loss: 0.0464 - accuracy: 0.9864 - val_loss: 2.2830 - val_accuracy: 0.7305
Epoch 22/50
5305/5305 [==============================] - 102s 19ms/sample - loss: 0.0356 - accuracy: 0.9876 - val_loss: 2.1279 - val_accuracy: 0.7455
Epoch 23/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 0.0229 - accuracy: 0.9928 - val_loss: 2.3444 - val_accuracy: 0.6916
Epoch 24/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 0.0283 - accuracy: 0.9889 - val_loss: 2.7184 - val_accuracy: 0.7186
Epoch 25/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 0.0167 - accuracy: 0.9936 - val_loss: 2.1904 - val_accuracy: 0.7515
Epoch 26/50
5305/5305 [==============================] - 101s 19ms/sample - loss: 0.0075 - accuracy: 0.9975 - val_loss: 2.4812 - val_accuracy: 0.7455
Epoch 27/50
5305/5305 [==============================] - 102s 19ms/sample - loss: 7.7280e-04 - accuracy: 1.0000 - val_loss: 3.4371 - val_accuracy: 0.7395
Epoch 28/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 0.0127 - accuracy: 0.9972 - val_loss: 2.1879 - val_accuracy: 0.7036
Epoch 29/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 0.0444 - accuracy: 0.9832 - val_loss: 3.4464 - val_accuracy: 0.6916
Epoch 30/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 0.0316 - accuracy: 0.9896 - val_loss: 2.4678 - val_accuracy: 0.7186
Epoch 31/50
5305/5305 [==============================] - 101s 19ms/sample - loss: 0.0151 - accuracy: 0.9949 - val_loss: 1.4689 - val_accuracy: 0.6976
Epoch 32/50
5305/5305 [==============================] - 102s 19ms/sample - loss: 0.0081 - accuracy: 0.9972 - val_loss: 2.8694 - val_accuracy: 0.7216
Epoch 33/50
5305/5305 [==============================] - 101s 19ms/sample - loss: 0.0033 - accuracy: 0.9991 - val_loss: 3.0134 - val_accuracy: 0.6617
Epoch 34/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 0.0282 - accuracy: 0.9910 - val_loss: 3.2721 - val_accuracy: 0.7455
Epoch 35/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 0.0342 - accuracy: 0.9894 - val_loss: 1.7325 - val_accuracy: 0.7335
Epoch 36/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 0.0121 - accuracy: 0.9960 - val_loss: 2.1142 - val_accuracy: 0.7425
Epoch 37/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 0.0080 - accuracy: 0.9977 - val_loss: 2.6792 - val_accuracy: 0.7156
Epoch 38/50
5305/5305 [==============================] - 101s 19ms/sample - loss: 0.0012 - accuracy: 0.9996 - val_loss: 3.1291 - val_accuracy: 0.7335
Epoch 39/50
5305/5305 [==============================] - 102s 19ms/sample - loss: 0.0211 - accuracy: 0.9930 - val_loss: 2.2938 - val_accuracy: 0.7605
Epoch 40/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 0.0014 - accuracy: 0.9996 - val_loss: 3.7288 - val_accuracy: 0.7335
Epoch 41/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 2.9918e-04 - accuracy: 1.0000 - val_loss: 3.4903 - val_accuracy: 0.7455
Epoch 42/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 1.8120e-04 - accuracy: 1.0000 - val_loss: 3.6336 - val_accuracy: 0.7455
Epoch 43/50
5305/5305 [==============================] - 101s 19ms/sample - loss: 1.6631e-04 - accuracy: 1.0000 - val_loss: 3.8596 - val_accuracy: 0.7335
Epoch 44/50
5305/5305 [==============================] - 102s 19ms/sample - loss: 0.0668 - accuracy: 0.9749 - val_loss: 2.5882 - val_accuracy: 0.6257
Epoch 45/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 0.0147 - accuracy: 0.9945 - val_loss: 2.4255 - val_accuracy: 0.6737
Epoch 46/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 0.0157 - accuracy: 0.9959 - val_loss: 4.0990 - val_accuracy: 0.7246
Epoch 47/50
5305/5305 [==============================] - 101s 19ms/sample - loss: 0.0073 - accuracy: 0.9981 - val_loss: 2.5248 - val_accuracy: 0.6138
Epoch 48/50
5305/5305 [==============================] - 100s 19ms/sample - loss: 0.0234 - accuracy: 0.9926 - val_loss: 3.7740 - val_accuracy: 0.6407
Epoch 49/50
5305/5305 [==============================] - 103s 19ms/sample - loss: 0.0011 - accuracy: 0.9998 - val_loss: 4.0129 - val_accuracy: 0.7126
Epoch 50/50
5305/5305 [==============================] - 101s 19ms/sample - loss: 0.0292 - accuracy: 0.9911 - val_loss: 3.4869 - val_accuracy: 0.6168




The AUC in the train set is 0.9929.




The AUC in the validation set is 0.6056.















In [27]:
# Generate predictions in the form of probabilities for the validation set
valCNNMCD = model.predict(shuffled_val_X, batch_size = 32)

# Generate the confusion matrix in the validation set
y_true = np.argmax(shuffled_val_y, axis=1)
y_predCNNMCD = np.argmax(valCNNMCD, axis=1)

# Confusion matrix
pd.DataFrame(confusion_matrix(y_true, y_predCNNMCD), index=['True: Normal', 'True: PVNH'], columns=['Prediction: Normal', 'Prediction: PVNH']).T
Out[27]:
True: Normal True: PVNH
Prediction: Normal 45 14
Prediction: PVNH 114 161
In [28]:
# Calculate accuracy in the validation set
accuracy_CNNMCD = accuracy_score(y_true=y_true, y_pred=y_predCNNMCD)
print('The accuracy in the validation set is {:.4f}.'.format(accuracy_CNNMCD))
The accuracy in the validation set is 0.6168.
In [29]:
# Calculate AUC in the validation set
auc_CNNMCD = roc_auc_score(shuffled_val_y, model.predict(shuffled_val_X))
print('The AUC in the validation set is {:.4f}.'.format(auc_validCNNMCD))
The AUC in the validation set is 0.6056.
In [30]:
# Classification report
print(classification_report(y_true, y_predCNNMCD, target_names=['Normal MRI', 'PVNH']))
              precision    recall  f1-score   support

  Normal MRI       0.76      0.28      0.41       159
        PVNH       0.59      0.92      0.72       175

    accuracy                           0.62       334
   macro avg       0.67      0.60      0.56       334
weighted avg       0.67      0.62      0.57       334

Save model CNNMCD

In [31]:
# Serialize model to JSON
model_json = model.to_json()
with open("CNNMCD.json", "w") as json_file:
    json_file.write(model_json)
# Serialize weights to HDF5
model.save_weights("CNNMCD.h5")

Model visualization

In [32]:
# Visualize the structure and layers of the model
model.layers
Out[32]:
[<tensorflow.python.keras.engine.input_layer.InputLayer at 0x7f2e98064da0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e97340b38>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2e97340d68>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2e9734bfd0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2e9734ba20>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e97352d68>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2e97352e10>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2e97303b38>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2e973037b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e97303e48>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2e9730aac8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e972b64a8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e972c3ba8>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2e7983bc50>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e972b6828>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e972c38d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e972c8898>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e972d2f60>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2e7983ba20>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e79844860>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e79853cf8>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2e798666a0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e79844da0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e7984cba8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e79853cc0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e7985ecc0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2e79871fd0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e797fb908>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e79802a58>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2e7981bb00>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e79871f98>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e798027b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e7980aeb8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e79814e10>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2e7981b8d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e79827f60>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e7982ee80>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2e797ca7b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e9adb5ba8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e7982eeb8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e79837e48>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2e797bfb38>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2e797d2e48>,
 <tensorflow.python.keras.layers.pooling.GlobalAveragePooling2D at 0x7f2e797d2f98>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f2e797d2e10>,
 <tensorflow.python.keras.layers.core.Dropout at 0x7f2e797dc240>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f2e797e6ba8>,
 <tensorflow.python.keras.layers.core.Dropout at 0x7f2e797e6630>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f2e7977b780>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f2e79781898>]
In [33]:
# Visualize the structure and layers of the model
print(model.summary())
Model: "model"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            [(None, 512, 512, 3) 0                                            
__________________________________________________________________________________________________
conv2d_8 (Conv2D)               (None, 512, 512, 128 3584        input_1[0][0]                    
__________________________________________________________________________________________________
max_pooling2d_3 (MaxPooling2D)  (None, 256, 256, 128 0           conv2d_8[0][0]                   
__________________________________________________________________________________________________
batch_normalization_2 (BatchNor (None, 256, 256, 128 512         max_pooling2d_3[0][0]            
__________________________________________________________________________________________________
activation_2 (Activation)       (None, 256, 256, 128 0           batch_normalization_2[0][0]      
__________________________________________________________________________________________________
conv2d_9 (Conv2D)               (None, 256, 256, 256 295168      activation_2[0][0]               
__________________________________________________________________________________________________
max_pooling2d_4 (MaxPooling2D)  (None, 128, 128, 256 0           conv2d_9[0][0]                   
__________________________________________________________________________________________________
batch_normalization_3 (BatchNor (None, 128, 128, 256 1024        max_pooling2d_4[0][0]            
__________________________________________________________________________________________________
activation_3 (Activation)       (None, 128, 128, 256 0           batch_normalization_3[0][0]      
__________________________________________________________________________________________________
conv2d_10 (Conv2D)              (None, 128, 128, 256 590080      activation_3[0][0]               
__________________________________________________________________________________________________
max_pooling2d_5 (MaxPooling2D)  (None, 64, 64, 256)  0           conv2d_10[0][0]                  
__________________________________________________________________________________________________
conv2d_12 (Conv2D)              (None, 64, 64, 128)  32896       max_pooling2d_5[0][0]            
__________________________________________________________________________________________________
conv2d_14 (Conv2D)              (None, 64, 64, 64)   16448       max_pooling2d_5[0][0]            
__________________________________________________________________________________________________
max_pooling2d_6 (MaxPooling2D)  (None, 64, 64, 256)  0           max_pooling2d_5[0][0]            
__________________________________________________________________________________________________
conv2d_11 (Conv2D)              (None, 64, 64, 128)  32896       max_pooling2d_5[0][0]            
__________________________________________________________________________________________________
conv2d_13 (Conv2D)              (None, 64, 64, 256)  295168      conv2d_12[0][0]                  
__________________________________________________________________________________________________
conv2d_15 (Conv2D)              (None, 64, 64, 128)  204928      conv2d_14[0][0]                  
__________________________________________________________________________________________________
conv2d_16 (Conv2D)              (None, 64, 64, 64)   147520      max_pooling2d_6[0][0]            
__________________________________________________________________________________________________
concatenate_1 (Concatenate)     (None, 64, 64, 576)  0           conv2d_11[0][0]                  
                                                                 conv2d_13[0][0]                  
                                                                 conv2d_15[0][0]                  
                                                                 conv2d_16[0][0]                  
__________________________________________________________________________________________________
conv2d_18 (Conv2D)              (None, 64, 64, 128)  73856       concatenate_1[0][0]              
__________________________________________________________________________________________________
conv2d_20 (Conv2D)              (None, 64, 64, 64)   36928       concatenate_1[0][0]              
__________________________________________________________________________________________________
max_pooling2d_7 (MaxPooling2D)  (None, 64, 64, 576)  0           concatenate_1[0][0]              
__________________________________________________________________________________________________
conv2d_17 (Conv2D)              (None, 64, 64, 128)  73856       concatenate_1[0][0]              
__________________________________________________________________________________________________
conv2d_19 (Conv2D)              (None, 64, 64, 256)  295168      conv2d_18[0][0]                  
__________________________________________________________________________________________________
conv2d_21 (Conv2D)              (None, 64, 64, 128)  204928      conv2d_20[0][0]                  
__________________________________________________________________________________________________
conv2d_22 (Conv2D)              (None, 64, 64, 64)   331840      max_pooling2d_7[0][0]            
__________________________________________________________________________________________________
concatenate_2 (Concatenate)     (None, 64, 64, 576)  0           conv2d_17[0][0]                  
                                                                 conv2d_19[0][0]                  
                                                                 conv2d_21[0][0]                  
                                                                 conv2d_22[0][0]                  
__________________________________________________________________________________________________
conv2d_24 (Conv2D)              (None, 64, 64, 128)  73856       concatenate_2[0][0]              
__________________________________________________________________________________________________
conv2d_26 (Conv2D)              (None, 64, 64, 64)   36928       concatenate_2[0][0]              
__________________________________________________________________________________________________
max_pooling2d_8 (MaxPooling2D)  (None, 64, 64, 576)  0           concatenate_2[0][0]              
__________________________________________________________________________________________________
conv2d_23 (Conv2D)              (None, 64, 64, 128)  73856       concatenate_2[0][0]              
__________________________________________________________________________________________________
conv2d_25 (Conv2D)              (None, 64, 64, 256)  295168      conv2d_24[0][0]                  
__________________________________________________________________________________________________
conv2d_27 (Conv2D)              (None, 64, 64, 128)  204928      conv2d_26[0][0]                  
__________________________________________________________________________________________________
conv2d_28 (Conv2D)              (None, 64, 64, 64)   331840      max_pooling2d_8[0][0]            
__________________________________________________________________________________________________
concatenate_3 (Concatenate)     (None, 64, 64, 576)  0           conv2d_23[0][0]                  
                                                                 conv2d_25[0][0]                  
                                                                 conv2d_27[0][0]                  
                                                                 conv2d_28[0][0]                  
__________________________________________________________________________________________________
conv2d_30 (Conv2D)              (None, 64, 64, 128)  73856       concatenate_3[0][0]              
__________________________________________________________________________________________________
conv2d_32 (Conv2D)              (None, 64, 64, 64)   36928       concatenate_3[0][0]              
__________________________________________________________________________________________________
max_pooling2d_9 (MaxPooling2D)  (None, 64, 64, 576)  0           concatenate_3[0][0]              
__________________________________________________________________________________________________
conv2d_29 (Conv2D)              (None, 64, 64, 128)  73856       concatenate_3[0][0]              
__________________________________________________________________________________________________
conv2d_31 (Conv2D)              (None, 64, 64, 256)  295168      conv2d_30[0][0]                  
__________________________________________________________________________________________________
conv2d_33 (Conv2D)              (None, 64, 64, 128)  204928      conv2d_32[0][0]                  
__________________________________________________________________________________________________
conv2d_34 (Conv2D)              (None, 64, 64, 64)   331840      max_pooling2d_9[0][0]            
__________________________________________________________________________________________________
concatenate_4 (Concatenate)     (None, 64, 64, 576)  0           conv2d_29[0][0]                  
                                                                 conv2d_31[0][0]                  
                                                                 conv2d_33[0][0]                  
                                                                 conv2d_34[0][0]                  
__________________________________________________________________________________________________
global_average_pooling2d (Globa (None, 576)          0           concatenate_4[0][0]              
__________________________________________________________________________________________________
dense (Dense)                   (None, 516)          297732      global_average_pooling2d[0][0]   
__________________________________________________________________________________________________
dropout (Dropout)               (None, 516)          0           dense[0][0]                      
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 256)          132352      dropout[0][0]                    
__________________________________________________________________________________________________
dropout_1 (Dropout)             (None, 256)          0           dense_1[0][0]                    
__________________________________________________________________________________________________
dense_2 (Dense)                 (None, 64)           16448       dropout_1[0][0]                  
__________________________________________________________________________________________________
dense_3 (Dense)                 (None, 2)            130         dense_2[0][0]                    
==================================================================================================
Total params: 5,116,614
Trainable params: 5,115,846
Non-trainable params: 768
__________________________________________________________________________________________________
None
In [34]:
# Define modifier to replace the sigmoid function of the last layer to a linear function
def model_modifier(m):
    m.layers[-1].activation = tf.keras.activations.linear

# Define losses functions. 0 is the index for a normal MRI
loss_normal = lambda output: K.mean(output[:, 0])

# Define losses functions. 2 is the index for a PVNH MRI
loss_PVNH = lambda output: K.mean(output[:, 1])
    
# Create Gradcam object
gradcam = Gradcam(model, model_modifier)

# Create Saliency object
saliency = Saliency(model, model_modifier)

# Iterate through the MRIs in test set

# Set background to white color
plt.rcParams['axes.facecolor']='white'
plt.rcParams['figure.facecolor']='white'
plt.rcParams['figure.edgecolor']='white'




print('\n \n' + '\033[1m' + 'EACH ORIGINAL MRI IS ANALYZED WITH TWO METHODS: CLASS ACTIVATION MAP (UPPER ROW) AND SALIENCY MAP (LOWER ROW)' + '\033[0m' + '\n')
print('\033[1m' + 'EACH MAP IS SUPERIMPOSED ON THE ORIGINAL MRI WITH A TRANSPARENCY THAT IS INVERSELY PROPORTIONAL TO THE ESTIMATED PROBABILITY OF THE MRI BELONGING TO THAT CATEGORY (NORMAL MRI OR PERIVENTRICULAR NODULAR HETEROTOPIA) \n \nHIGHER ESTIMATED PROBABILITIES PRODUCE CLEARLY SEEN MAPS OVERLAID ON THE ORIGINAL MRI AND LOWER ESTIMATED PROBABILITIES PRODUCE VERY TRANSPARENT OR NOT APPRECIABLE MAPS OVERLAID ON THE ORIGINAL MRI' + '\033[0m'+ '\n')


for i in range(20):
    
    # Print spaces to separate from the next image
    print('\n \n \n \n \n \n')
  
    # Print real classification of the image
    if y_true[i]==0:
        real_classification='Normal MRI'
    else:
        real_classification='PVNH'
        
    print('\033[1m' + 'REAL CLASSIFICATION OF THE IMAGE: {}'.format(real_classification) + '\033[0m')
   
    # Print model classification and model probability of MCD
    if y_predCNNMCD[i]==0:
        predicted_classification='Normal MRI'
    else:
        predicted_classification='PVNH'   
    
    print('\033[1m' + 'MODEL CLASSIFICATION OF THE IMAGE: {}'.format(predicted_classification)  + '\033[0m \n') 
    print('\033[1m' + '   Prob. Normal MRI: {:.4f}    '.format(valCNNMCD[i][0]) + 'Prob. PVNH: {:.4f}'.format(valCNNMCD[i][1]) + '\033[0m')

    
    # Arrays to plot
    original_image=shuffled_val_X[i]
    list_heatmaps=[
        # GradCam heatmap for normal MRI
        normalize(gradcam(loss_normal, shuffled_val_X[i])),
        # GradCam heatmap for PVNH
        normalize(gradcam(loss_PVNH, shuffled_val_X[i])),
        
        # Saliency heatmap for normal MRI
        normalize(saliency(loss_normal, seed_input=np.expand_dims(shuffled_val_X[i], axis=0), smooth_noise=0.2)),
        # Saliency heatmap for PVNH
        normalize(saliency(loss_PVNH, seed_input=np.expand_dims(shuffled_val_X[i], axis=0), smooth_noise=0.2))
    ]
    
    # Define figure
    f=plt.figure(figsize=(20, 8))

    # Define the image grid
    grid = ImageGrid(f, 111,
                nrows_ncols=(2, 2),
                axes_pad=0.05,
                share_all=True,
                cbar_location="right",
                cbar_mode=None,
                cbar_size="2%",
                cbar_pad=0.15)

    
    # Iterate over the graphs
    for j, axis in enumerate(grid):
        # Plot original 
        im=axis.imshow(original_image)
        im=axis.imshow(list_heatmaps[j][0], cmap='jet', alpha=0.5*valCNNMCD[i][j%2])
        im=axis.set_xticks([])
        im=axis.set_yticks([])
    
    # Create scalarmappable for obtaining the colorbar from 0 to 1
    sm = plt.cm.ScalarMappable(cmap='jet', norm=plt.Normalize(vmin=0, vmax=1))
    plt.colorbar(sm)
    plt.show()
 
EACH ORIGINAL MRI IS ANALYZED WITH TWO METHODS: CLASS ACTIVATION MAP (UPPER ROW) AND SALIENCY MAP (LOWER ROW)

EACH MAP IS SUPERIMPOSED ON THE ORIGINAL MRI WITH A TRANSPARENCY THAT IS INVERSELY PROPORTIONAL TO THE ESTIMATED PROBABILITY OF THE MRI BELONGING TO THAT CATEGORY (NORMAL MRI OR PERIVENTRICULAR NODULAR HETEROTOPIA) 
 
HIGHER ESTIMATED PROBABILITIES PRODUCE CLEARLY SEEN MAPS OVERLAID ON THE ORIGINAL MRI AND LOWER ESTIMATED PROBABILITIES PRODUCE VERY TRANSPARENT OR NOT APPRECIABLE MAPS OVERLAID ON THE ORIGINAL MRI


 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0038    Prob. PVNH: 0.9962
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0001    Prob. PVNH: 0.9999
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0110    Prob. PVNH: 0.9890
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0027    Prob. PVNH: 0.9973
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0496    Prob. PVNH: 0.9504
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.5822    Prob. PVNH: 0.4178
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.2126    Prob. PVNH: 0.7874
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.1152    Prob. PVNH: 0.8848
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9970    Prob. PVNH: 0.0030
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0199    Prob. PVNH: 0.9801
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0322    Prob. PVNH: 0.9678
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.5737    Prob. PVNH: 0.4263
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0039    Prob. PVNH: 0.9961

InceptionV3

Define the convolutional neural network

In [35]:
# Use InceptionV3 as the base model
base_model = tf.keras.applications.inception_v3.InceptionV3(layers=tf.keras.layers, weights='imagenet', include_top = False, input_shape=train_X.shape[1:])

# Get the output of the base model
x = base_model.output

# Add a 2D global average pooling layer
x = GlobalAveragePooling2D()(x)

## Add the fully-connected layers
x = Dense(units=516, activation='relu')(x)
x = Dropout(rate=0.5)(x)
x = Dense(units=256, activation='relu')(x)
x = Dropout(rate=0.5)(x)
x = Dense(units=64, activation='relu')(x)

# Ad a layer for multiclass classification
predictions = Dense(units = 2, activation = 'softmax')(x)

# Define the model to be trained
model = Model(inputs = base_model.input, outputs = predictions)

# Train only the last 20 layers in the base model
for layer in base_model.layers[:-20]:
    layer.trainable = False
for layer in base_model.layers[-20:]:
    layer.trainable = True
    
# Compile the model
opt = Adam(lr = 0.0001)
model.compile(optimizer = opt, loss = 'categorical_crossentropy', metrics = ['accuracy'])

# Fit and test the model in the validation set
historyInceptionV3 = model.fit(shuffled_train_X, shuffled_train_y, validation_data = [shuffled_val_X, shuffled_val_y], epochs = 50, batch_size = 32)

print('\n')
print('\n')
# AUC in train and validation set
auc_trainInceptionV3 = roc_auc_score(shuffled_train_y, model.predict(shuffled_train_X))
print('The AUC in the train set is {:.4f}.'.format(auc_trainInceptionV3))
print('\n')
print('\n')
auc_validInceptionV3 = roc_auc_score(shuffled_val_y, model.predict(shuffled_val_X))
print('The AUC in the validation set is {:.4f}.'.format(auc_validInceptionV3))

print('\n')
print('\n')
print('\n')
print('\n')

# Figure size and colors
mpl.rcParams['figure.figsize'] = (20,24)
plt.rcParams['axes.facecolor']='white'
plt.rcParams['figure.facecolor']='lightgreen'
plt.rcParams['figure.edgecolor']='black'

# Plot history of loss during training
plt.plot(historyInceptionV3.history['loss'], label='Train', color='red')
plt.plot(historyInceptionV3.history['val_loss'], label='Validation', color='blue')
plt.title('Loss in train and validation set', size=30)
plt.xlabel('Epoch', size=24)
plt.ylabel('Categorical cross-entropy loss', size=24)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(fontsize=20)
plt.ylim(ymin=0, ymax=5)
plt.grid(b=None)
plt.show()

print('\n')
print('\n')
print('\n')
print('\n')

# Plot history of accuracy
plt.plot(historyInceptionV3.history['accuracy'], label='Train', color='red')
plt.plot(historyInceptionV3.history['val_accuracy'], label='Validation', color='blue')
plt.title('Accuracy in train and validation set', size=30)
plt.xlabel('Epoch', size=24)
plt.ylabel('Accuracy', size=24)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(fontsize=20)
plt.ylim(ymin=0, ymax=1.1)
plt.grid(b=None)
plt.show()
Train on 5305 samples, validate on 334 samples
Epoch 1/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.4678 - accuracy: 0.7738 - val_loss: 0.4699 - val_accuracy: 0.8084
Epoch 2/50
5305/5305 [==============================] - 28s 5ms/sample - loss: 0.2556 - accuracy: 0.8965 - val_loss: 0.5653 - val_accuracy: 0.7754
Epoch 3/50
5305/5305 [==============================] - 23s 4ms/sample - loss: 0.1384 - accuracy: 0.9489 - val_loss: 0.6559 - val_accuracy: 0.7784
Epoch 4/50
5305/5305 [==============================] - 25s 5ms/sample - loss: 0.0873 - accuracy: 0.9693 - val_loss: 0.8514 - val_accuracy: 0.7395
Epoch 5/50
5305/5305 [==============================] - 28s 5ms/sample - loss: 0.0525 - accuracy: 0.9811 - val_loss: 0.7950 - val_accuracy: 0.8024
Epoch 6/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0484 - accuracy: 0.9859 - val_loss: 0.9793 - val_accuracy: 0.7754
Epoch 7/50
5305/5305 [==============================] - 28s 5ms/sample - loss: 0.0295 - accuracy: 0.9910 - val_loss: 1.3929 - val_accuracy: 0.7246
Epoch 8/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0275 - accuracy: 0.9921 - val_loss: 1.0174 - val_accuracy: 0.7934
Epoch 9/50
5305/5305 [==============================] - 28s 5ms/sample - loss: 0.0248 - accuracy: 0.9925 - val_loss: 1.2344 - val_accuracy: 0.7844
Epoch 10/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0185 - accuracy: 0.9932 - val_loss: 1.3992 - val_accuracy: 0.7216
Epoch 11/50
5305/5305 [==============================] - 27s 5ms/sample - loss: 0.0160 - accuracy: 0.9943 - val_loss: 1.5222 - val_accuracy: 0.7515
Epoch 12/50
5305/5305 [==============================] - 25s 5ms/sample - loss: 0.0409 - accuracy: 0.9862 - val_loss: 1.0797 - val_accuracy: 0.7844
Epoch 13/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0160 - accuracy: 0.9938 - val_loss: 1.5364 - val_accuracy: 0.7665
Epoch 14/50
5305/5305 [==============================] - 24s 4ms/sample - loss: 0.0081 - accuracy: 0.9977 - val_loss: 2.0009 - val_accuracy: 0.7186
Epoch 15/50
5305/5305 [==============================] - 27s 5ms/sample - loss: 0.0129 - accuracy: 0.9959 - val_loss: 1.5305 - val_accuracy: 0.7275
Epoch 16/50
5305/5305 [==============================] - 26s 5ms/sample - loss: 0.0090 - accuracy: 0.9960 - val_loss: 1.6687 - val_accuracy: 0.7455
Epoch 17/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0260 - accuracy: 0.9908 - val_loss: 1.3001 - val_accuracy: 0.7814
Epoch 18/50
5305/5305 [==============================] - 25s 5ms/sample - loss: 0.0133 - accuracy: 0.9959 - val_loss: 1.2938 - val_accuracy: 0.7754
Epoch 19/50
5305/5305 [==============================] - 27s 5ms/sample - loss: 0.0072 - accuracy: 0.9974 - val_loss: 2.2751 - val_accuracy: 0.6737
Epoch 20/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0045 - accuracy: 0.9989 - val_loss: 2.2253 - val_accuracy: 0.6557
Epoch 21/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0055 - accuracy: 0.9981 - val_loss: 1.4500 - val_accuracy: 0.7725
Epoch 22/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0064 - accuracy: 0.9977 - val_loss: 1.6235 - val_accuracy: 0.7695
Epoch 23/50
5305/5305 [==============================] - 28s 5ms/sample - loss: 0.0050 - accuracy: 0.9985 - val_loss: 1.7580 - val_accuracy: 0.7784
Epoch 24/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0168 - accuracy: 0.9943 - val_loss: 1.6206 - val_accuracy: 0.7485
Epoch 25/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0075 - accuracy: 0.9972 - val_loss: 1.5054 - val_accuracy: 0.7814
Epoch 26/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0168 - accuracy: 0.9943 - val_loss: 1.9195 - val_accuracy: 0.7485
Epoch 27/50
5305/5305 [==============================] - 24s 4ms/sample - loss: 0.0063 - accuracy: 0.9977 - val_loss: 1.6970 - val_accuracy: 0.7695
Epoch 28/50
5305/5305 [==============================] - 26s 5ms/sample - loss: 0.0048 - accuracy: 0.9985 - val_loss: 1.6150 - val_accuracy: 0.7425
Epoch 29/50
5305/5305 [==============================] - 26s 5ms/sample - loss: 0.0069 - accuracy: 0.9968 - val_loss: 2.1872 - val_accuracy: 0.7365
Epoch 30/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0054 - accuracy: 0.9983 - val_loss: 1.9344 - val_accuracy: 0.7485
Epoch 31/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0159 - accuracy: 0.9943 - val_loss: 1.5256 - val_accuracy: 0.7725
Epoch 32/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0037 - accuracy: 0.9983 - val_loss: 1.7968 - val_accuracy: 0.7515
Epoch 33/50
5305/5305 [==============================] - 27s 5ms/sample - loss: 0.0059 - accuracy: 0.9979 - val_loss: 2.6969 - val_accuracy: 0.7036
Epoch 34/50
5305/5305 [==============================] - 25s 5ms/sample - loss: 0.0057 - accuracy: 0.9983 - val_loss: 1.4508 - val_accuracy: 0.7814
Epoch 35/50
5305/5305 [==============================] - 24s 4ms/sample - loss: 0.0067 - accuracy: 0.9983 - val_loss: 2.6883 - val_accuracy: 0.6707
Epoch 36/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0193 - accuracy: 0.9930 - val_loss: 1.9376 - val_accuracy: 0.7605
Epoch 37/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0049 - accuracy: 0.9985 - val_loss: 1.7992 - val_accuracy: 0.7216
Epoch 38/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0016 - accuracy: 0.9998 - val_loss: 1.8360 - val_accuracy: 0.7605
Epoch 39/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0013 - accuracy: 0.9992 - val_loss: 2.1307 - val_accuracy: 0.7515
Epoch 40/50
5305/5305 [==============================] - 25s 5ms/sample - loss: 0.0074 - accuracy: 0.9979 - val_loss: 1.8149 - val_accuracy: 0.7725
Epoch 41/50
5305/5305 [==============================] - 26s 5ms/sample - loss: 0.0084 - accuracy: 0.9964 - val_loss: 1.4064 - val_accuracy: 0.7904
Epoch 42/50
5305/5305 [==============================] - 25s 5ms/sample - loss: 0.0103 - accuracy: 0.9964 - val_loss: 1.6864 - val_accuracy: 0.7725
Epoch 43/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0042 - accuracy: 0.9977 - val_loss: 1.9306 - val_accuracy: 0.7575
Epoch 44/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0097 - accuracy: 0.9966 - val_loss: 1.8918 - val_accuracy: 0.7515
Epoch 45/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0034 - accuracy: 0.9987 - val_loss: 2.1758 - val_accuracy: 0.7156
Epoch 46/50
5305/5305 [==============================] - 28s 5ms/sample - loss: 0.0070 - accuracy: 0.9975 - val_loss: 2.3538 - val_accuracy: 0.6976
Epoch 47/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 2.7216e-04 - accuracy: 1.0000 - val_loss: 2.5626 - val_accuracy: 0.6916
Epoch 48/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0164 - accuracy: 0.9955 - val_loss: 2.0401 - val_accuracy: 0.6946
Epoch 49/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 0.0015 - accuracy: 0.9996 - val_loss: 2.3505 - val_accuracy: 0.7096
Epoch 50/50
5305/5305 [==============================] - 24s 5ms/sample - loss: 4.8547e-04 - accuracy: 1.0000 - val_loss: 2.1723 - val_accuracy: 0.7305




The AUC in the train set is 1.0000.




The AUC in the validation set is 0.8110.















In [36]:
# Generate predictions in the form of probabilities for the validation set
valInceptionV3 = model.predict(shuffled_val_X, batch_size = 32)

# Generate the confusion matrix in the validation set
y_true = np.argmax(shuffled_val_y, axis=1)
y_predInceptionV3 = np.argmax(valInceptionV3, axis=1)

# Confusion matrix
pd.DataFrame(confusion_matrix(y_true, y_predInceptionV3), index=['True: Normal', 'True: PVNH'], columns=['Prediction: Normal', 'Prediction: PVNH']).T
Out[36]:
True: Normal True: PVNH
Prediction: Normal 121 52
Prediction: PVNH 38 123
In [37]:
# Calculate accuracy in the validation set
accuracy_InceptionV3 = accuracy_score(y_true=y_true, y_pred=y_predInceptionV3)
print('The accuracy in the validation set is {:.4f}.'.format(accuracy_InceptionV3))
The accuracy in the validation set is 0.7305.
In [38]:
# Calculate AUC in the validation set
auc_validInceptionV3 = roc_auc_score(shuffled_val_y, model.predict(shuffled_val_X))
print('The AUC in the validation set is {:.4f}.'.format(auc_validInceptionV3))
The AUC in the validation set is 0.8110.
In [39]:
# Classification report
print(classification_report(y_true, y_predInceptionV3, target_names=['Normal MRI', 'PVNH']))
              precision    recall  f1-score   support

  Normal MRI       0.70      0.76      0.73       159
        PVNH       0.76      0.70      0.73       175

    accuracy                           0.73       334
   macro avg       0.73      0.73      0.73       334
weighted avg       0.73      0.73      0.73       334

Save model InceptionV3

In [40]:
# Serialize model to JSON
model_json = model.to_json()
with open("InceptionV3.json", "w") as json_file:
    json_file.write(model_json)
# Serialize weights to HDF5
model.save_weights("InceptionV3.h5")

Model visualization

In [41]:
# Visualize the structure and layers of the model
model.layers
Out[41]:
[<tensorflow.python.keras.engine.input_layer.InputLayer at 0x7f2cb04f3c50>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c3012b320>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c3012b898>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c3012b9e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c3012b6a0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c3010e7f0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c3010ea90>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c3010e4a8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c3030c978>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c3030cc18>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2c3030c630>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c3030ccf8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c301c74a8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c301c72b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c301d3048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c301c1e80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb04998d0>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2cb0499160>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb0344048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb0366e48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb036f898>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb049b710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb036f128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb0731cc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30519630>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb0731c88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c30519ba8>,
 <tensorflow.python.keras.layers.pooling.AveragePooling2D at 0x7f2c304825f8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb0486fd0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb0731f98>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c305192e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c30482cc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb049b978>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb033ffd0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30482940>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c304adf60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb049bf98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb033fc88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c30482f28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c304b56a0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2c304b50f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c30201048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30224e48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c3022f898>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c302a4400>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c3022f128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c3024fcc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30093630>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c3024fc88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c30093ba8>,
 <tensorflow.python.keras.layers.pooling.AveragePooling2D at 0x7f2dcab8f9e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c304b5400>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c3024ff98>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c300932e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c3004cbe0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c302a4978>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c301f7fd0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30044940>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc0fa4a8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c302a4f98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c301f7c88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c30044f28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc0faeb8>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2cbc0fab70>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc5ed9b0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2ccc011cc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2ec4f97cf8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb0519a58>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2ccc011128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2ccc041b38>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb0395048>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2ccc041be0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc2ea198>,
 <tensorflow.python.keras.layers.pooling.AveragePooling2D at 0x7f2cb0412470>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc0fa748>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2ccc041c18>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc2eae80>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb0412b38>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb042b400>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2ccc1844a8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb04127b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc40fef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb0519e10>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc5ed9e8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb0412d30>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc40feb8>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2cbc40a358>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb0530278>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb053ca58>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb051e198>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb053c710>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc1ecd68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc1ecd30>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc40a2b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc1eca20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb05307f0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc210c88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb0530dd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc1ef630>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2cbc1ef0f0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2cbc1ef438>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc118240>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30445780>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c304455f8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c30445c18>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30460ac8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c3045a080>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb03a2f98>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c30460780>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb053ff28>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30138dd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb053fef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c30138da0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb05683c8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c30166240>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc25eda0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc308cf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc2637f0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc2eb6a0>,
 <tensorflow.python.keras.layers.pooling.AveragePooling2D at 0x7f2c3041b0f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb03ade48>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc263080>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc2eb160>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c3041b7b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb03a2cc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc118588>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30414da0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30392a90>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb03a2c88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc118b00>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c3041b9b0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c303a2048>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2c30392828>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb05ee630>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc39be80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc37e160>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc39b940>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc392dd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc392da0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c303a82e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc385240>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c3059b518>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb07ecc18>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c3059ba90>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb07ecfd0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c3059b1d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb07de048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c3034b748>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb03efda0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c3034bcc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb03f07f0>,
 <tensorflow.python.keras.layers.pooling.AveragePooling2D at 0x7f2cbc1e4160>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c30392dd8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c3034b400>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb03f0080>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc1e4828>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c3038cef0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb05ee978>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb03d4f28>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc1c8b00>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c303a8898>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb05eef60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc1e4a20>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc1c2128>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2cbc1c8898>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc3326d8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c304c6c50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c304c6c18>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c304c6e80>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc0b5e80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc0b5e48>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb063e048>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc0d5320>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb05a45c0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc0e2cc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb05a4b38>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc2a5668>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb05a4278>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc2a5128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc3687f0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc2a1e48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc368d68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc299898>,
 <tensorflow.python.keras.layers.pooling.AveragePooling2D at 0x7f2cb07b7208>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc1c8da0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc3684a8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc299128>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb07b78d0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb0642ef0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc332a20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb07b7550>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb02cbba8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb063e940>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc32a160>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb07b7ac8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb02e31d0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2cb02cb940>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc031780>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc188cf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc188cc0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc188f60>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb0605f28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb0605ef0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb02c10b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb06213c8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb046a668>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb05fed68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb046abe0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb031a4e0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb046a320>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb031a5f8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc035898>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb0328ef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc035e10>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb031c940>,
 <tensorflow.python.keras.layers.pooling.AveragePooling2D at 0x7f2cbc2c52b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb02cbf98>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc035550>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb031c080>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc2c5978>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb02cefd0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc031ac8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc2c55f8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb069ec50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb02c19e8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc183080>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc2c5b70>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb069ec18>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2cb069eeb8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cbc13e390>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb06d1908>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb06d1ef0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb06d15c0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb02b5b38>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb02960f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb069eef0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb02b57f0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb069ce48>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb0292d68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb068ba58>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb0292d30>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb068b0f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb0292a20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cbc13e6d8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c30625f98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cbc13ec50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c30625f60>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f2c30620400>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2c30620358>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd553e588>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd54eb898>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd54ebe80>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb074f748>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd54eb390>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb077ad68>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd5518b00>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb077ad30>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd551f0b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb077aa20>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd5592400>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd55187b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd54c19e8>,
 <tensorflow.python.keras.layers.pooling.AveragePooling2D at 0x7f2bd54763c8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2cb0741c88>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd558bf98>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd5539dd8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd54c1d30>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd546cf60>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd5498c88>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2cb074fb00>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd558bf60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd553e780>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd54c1cf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd546cf28>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd54a0a90>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2cb0755128>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2bd553e240>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2bd5476400>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd542a048>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2bd54a06d8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd53dad30>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd5384d68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd538c668>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd5453320>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd538c0b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd5402550>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd532de10>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd5402ac8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd5338860>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd5402208>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd53ad438>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd53380f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd52e31d0>,
 <tensorflow.python.keras.layers.pooling.AveragePooling2D at 0x7f2bd5311ac8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd54a0d30>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd53ad780>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd53da9b0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd52e3518>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd5311748>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2bd52be940>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd544df28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd53adcf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd53daf98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd52e3a90>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd5311cc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2bd52bee80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd54538d0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2bd53da668>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2bd5311400>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2bd52c4860>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2bd52c42b0>,
 <tensorflow.python.keras.layers.pooling.GlobalAveragePooling2D at 0x7f2bd5297d30>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f2cb04f3a58>,
 <tensorflow.python.keras.layers.core.Dropout at 0x7f2bd5281048>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f2bd51f8860>,
 <tensorflow.python.keras.layers.core.Dropout at 0x7f2bd51f8358>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f2bd51e6198>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f2bd51fdb38>]
In [42]:
# Visualize the structure and layers of the model
print(model.summary())
Model: "model_41"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_2 (InputLayer)            [(None, 512, 512, 3) 0                                            
__________________________________________________________________________________________________
conv2d_35 (Conv2D)              (None, 255, 255, 32) 864         input_2[0][0]                    
__________________________________________________________________________________________________
batch_normalization_4 (BatchNor (None, 255, 255, 32) 96          conv2d_35[0][0]                  
__________________________________________________________________________________________________
activation_4 (Activation)       (None, 255, 255, 32) 0           batch_normalization_4[0][0]      
__________________________________________________________________________________________________
conv2d_36 (Conv2D)              (None, 253, 253, 32) 9216        activation_4[0][0]               
__________________________________________________________________________________________________
batch_normalization_5 (BatchNor (None, 253, 253, 32) 96          conv2d_36[0][0]                  
__________________________________________________________________________________________________
activation_5 (Activation)       (None, 253, 253, 32) 0           batch_normalization_5[0][0]      
__________________________________________________________________________________________________
conv2d_37 (Conv2D)              (None, 253, 253, 64) 18432       activation_5[0][0]               
__________________________________________________________________________________________________
batch_normalization_6 (BatchNor (None, 253, 253, 64) 192         conv2d_37[0][0]                  
__________________________________________________________________________________________________
activation_6 (Activation)       (None, 253, 253, 64) 0           batch_normalization_6[0][0]      
__________________________________________________________________________________________________
max_pooling2d_10 (MaxPooling2D) (None, 126, 126, 64) 0           activation_6[0][0]               
__________________________________________________________________________________________________
conv2d_38 (Conv2D)              (None, 126, 126, 80) 5120        max_pooling2d_10[0][0]           
__________________________________________________________________________________________________
batch_normalization_7 (BatchNor (None, 126, 126, 80) 240         conv2d_38[0][0]                  
__________________________________________________________________________________________________
activation_7 (Activation)       (None, 126, 126, 80) 0           batch_normalization_7[0][0]      
__________________________________________________________________________________________________
conv2d_39 (Conv2D)              (None, 124, 124, 192 138240      activation_7[0][0]               
__________________________________________________________________________________________________
batch_normalization_8 (BatchNor (None, 124, 124, 192 576         conv2d_39[0][0]                  
__________________________________________________________________________________________________
activation_8 (Activation)       (None, 124, 124, 192 0           batch_normalization_8[0][0]      
__________________________________________________________________________________________________
max_pooling2d_11 (MaxPooling2D) (None, 61, 61, 192)  0           activation_8[0][0]               
__________________________________________________________________________________________________
conv2d_43 (Conv2D)              (None, 61, 61, 64)   12288       max_pooling2d_11[0][0]           
__________________________________________________________________________________________________
batch_normalization_12 (BatchNo (None, 61, 61, 64)   192         conv2d_43[0][0]                  
__________________________________________________________________________________________________
activation_12 (Activation)      (None, 61, 61, 64)   0           batch_normalization_12[0][0]     
__________________________________________________________________________________________________
conv2d_41 (Conv2D)              (None, 61, 61, 48)   9216        max_pooling2d_11[0][0]           
__________________________________________________________________________________________________
conv2d_44 (Conv2D)              (None, 61, 61, 96)   55296       activation_12[0][0]              
__________________________________________________________________________________________________
batch_normalization_10 (BatchNo (None, 61, 61, 48)   144         conv2d_41[0][0]                  
__________________________________________________________________________________________________
batch_normalization_13 (BatchNo (None, 61, 61, 96)   288         conv2d_44[0][0]                  
__________________________________________________________________________________________________
activation_10 (Activation)      (None, 61, 61, 48)   0           batch_normalization_10[0][0]     
__________________________________________________________________________________________________
activation_13 (Activation)      (None, 61, 61, 96)   0           batch_normalization_13[0][0]     
__________________________________________________________________________________________________
average_pooling2d (AveragePooli (None, 61, 61, 192)  0           max_pooling2d_11[0][0]           
__________________________________________________________________________________________________
conv2d_40 (Conv2D)              (None, 61, 61, 64)   12288       max_pooling2d_11[0][0]           
__________________________________________________________________________________________________
conv2d_42 (Conv2D)              (None, 61, 61, 64)   76800       activation_10[0][0]              
__________________________________________________________________________________________________
conv2d_45 (Conv2D)              (None, 61, 61, 96)   82944       activation_13[0][0]              
__________________________________________________________________________________________________
conv2d_46 (Conv2D)              (None, 61, 61, 32)   6144        average_pooling2d[0][0]          
__________________________________________________________________________________________________
batch_normalization_9 (BatchNor (None, 61, 61, 64)   192         conv2d_40[0][0]                  
__________________________________________________________________________________________________
batch_normalization_11 (BatchNo (None, 61, 61, 64)   192         conv2d_42[0][0]                  
__________________________________________________________________________________________________
batch_normalization_14 (BatchNo (None, 61, 61, 96)   288         conv2d_45[0][0]                  
__________________________________________________________________________________________________
batch_normalization_15 (BatchNo (None, 61, 61, 32)   96          conv2d_46[0][0]                  
__________________________________________________________________________________________________
activation_9 (Activation)       (None, 61, 61, 64)   0           batch_normalization_9[0][0]      
__________________________________________________________________________________________________
activation_11 (Activation)      (None, 61, 61, 64)   0           batch_normalization_11[0][0]     
__________________________________________________________________________________________________
activation_14 (Activation)      (None, 61, 61, 96)   0           batch_normalization_14[0][0]     
__________________________________________________________________________________________________
activation_15 (Activation)      (None, 61, 61, 32)   0           batch_normalization_15[0][0]     
__________________________________________________________________________________________________
mixed0 (Concatenate)            (None, 61, 61, 256)  0           activation_9[0][0]               
                                                                 activation_11[0][0]              
                                                                 activation_14[0][0]              
                                                                 activation_15[0][0]              
__________________________________________________________________________________________________
conv2d_50 (Conv2D)              (None, 61, 61, 64)   16384       mixed0[0][0]                     
__________________________________________________________________________________________________
batch_normalization_19 (BatchNo (None, 61, 61, 64)   192         conv2d_50[0][0]                  
__________________________________________________________________________________________________
activation_19 (Activation)      (None, 61, 61, 64)   0           batch_normalization_19[0][0]     
__________________________________________________________________________________________________
conv2d_48 (Conv2D)              (None, 61, 61, 48)   12288       mixed0[0][0]                     
__________________________________________________________________________________________________
conv2d_51 (Conv2D)              (None, 61, 61, 96)   55296       activation_19[0][0]              
__________________________________________________________________________________________________
batch_normalization_17 (BatchNo (None, 61, 61, 48)   144         conv2d_48[0][0]                  
__________________________________________________________________________________________________
batch_normalization_20 (BatchNo (None, 61, 61, 96)   288         conv2d_51[0][0]                  
__________________________________________________________________________________________________
activation_17 (Activation)      (None, 61, 61, 48)   0           batch_normalization_17[0][0]     
__________________________________________________________________________________________________
activation_20 (Activation)      (None, 61, 61, 96)   0           batch_normalization_20[0][0]     
__________________________________________________________________________________________________
average_pooling2d_1 (AveragePoo (None, 61, 61, 256)  0           mixed0[0][0]                     
__________________________________________________________________________________________________
conv2d_47 (Conv2D)              (None, 61, 61, 64)   16384       mixed0[0][0]                     
__________________________________________________________________________________________________
conv2d_49 (Conv2D)              (None, 61, 61, 64)   76800       activation_17[0][0]              
__________________________________________________________________________________________________
conv2d_52 (Conv2D)              (None, 61, 61, 96)   82944       activation_20[0][0]              
__________________________________________________________________________________________________
conv2d_53 (Conv2D)              (None, 61, 61, 64)   16384       average_pooling2d_1[0][0]        
__________________________________________________________________________________________________
batch_normalization_16 (BatchNo (None, 61, 61, 64)   192         conv2d_47[0][0]                  
__________________________________________________________________________________________________
batch_normalization_18 (BatchNo (None, 61, 61, 64)   192         conv2d_49[0][0]                  
__________________________________________________________________________________________________
batch_normalization_21 (BatchNo (None, 61, 61, 96)   288         conv2d_52[0][0]                  
__________________________________________________________________________________________________
batch_normalization_22 (BatchNo (None, 61, 61, 64)   192         conv2d_53[0][0]                  
__________________________________________________________________________________________________
activation_16 (Activation)      (None, 61, 61, 64)   0           batch_normalization_16[0][0]     
__________________________________________________________________________________________________
activation_18 (Activation)      (None, 61, 61, 64)   0           batch_normalization_18[0][0]     
__________________________________________________________________________________________________
activation_21 (Activation)      (None, 61, 61, 96)   0           batch_normalization_21[0][0]     
__________________________________________________________________________________________________
activation_22 (Activation)      (None, 61, 61, 64)   0           batch_normalization_22[0][0]     
__________________________________________________________________________________________________
mixed1 (Concatenate)            (None, 61, 61, 288)  0           activation_16[0][0]              
                                                                 activation_18[0][0]              
                                                                 activation_21[0][0]              
                                                                 activation_22[0][0]              
__________________________________________________________________________________________________
conv2d_57 (Conv2D)              (None, 61, 61, 64)   18432       mixed1[0][0]                     
__________________________________________________________________________________________________
batch_normalization_26 (BatchNo (None, 61, 61, 64)   192         conv2d_57[0][0]                  
__________________________________________________________________________________________________
activation_26 (Activation)      (None, 61, 61, 64)   0           batch_normalization_26[0][0]     
__________________________________________________________________________________________________
conv2d_55 (Conv2D)              (None, 61, 61, 48)   13824       mixed1[0][0]                     
__________________________________________________________________________________________________
conv2d_58 (Conv2D)              (None, 61, 61, 96)   55296       activation_26[0][0]              
__________________________________________________________________________________________________
batch_normalization_24 (BatchNo (None, 61, 61, 48)   144         conv2d_55[0][0]                  
__________________________________________________________________________________________________
batch_normalization_27 (BatchNo (None, 61, 61, 96)   288         conv2d_58[0][0]                  
__________________________________________________________________________________________________
activation_24 (Activation)      (None, 61, 61, 48)   0           batch_normalization_24[0][0]     
__________________________________________________________________________________________________
activation_27 (Activation)      (None, 61, 61, 96)   0           batch_normalization_27[0][0]     
__________________________________________________________________________________________________
average_pooling2d_2 (AveragePoo (None, 61, 61, 288)  0           mixed1[0][0]                     
__________________________________________________________________________________________________
conv2d_54 (Conv2D)              (None, 61, 61, 64)   18432       mixed1[0][0]                     
__________________________________________________________________________________________________
conv2d_56 (Conv2D)              (None, 61, 61, 64)   76800       activation_24[0][0]              
__________________________________________________________________________________________________
conv2d_59 (Conv2D)              (None, 61, 61, 96)   82944       activation_27[0][0]              
__________________________________________________________________________________________________
conv2d_60 (Conv2D)              (None, 61, 61, 64)   18432       average_pooling2d_2[0][0]        
__________________________________________________________________________________________________
batch_normalization_23 (BatchNo (None, 61, 61, 64)   192         conv2d_54[0][0]                  
__________________________________________________________________________________________________
batch_normalization_25 (BatchNo (None, 61, 61, 64)   192         conv2d_56[0][0]                  
__________________________________________________________________________________________________
batch_normalization_28 (BatchNo (None, 61, 61, 96)   288         conv2d_59[0][0]                  
__________________________________________________________________________________________________
batch_normalization_29 (BatchNo (None, 61, 61, 64)   192         conv2d_60[0][0]                  
__________________________________________________________________________________________________
activation_23 (Activation)      (None, 61, 61, 64)   0           batch_normalization_23[0][0]     
__________________________________________________________________________________________________
activation_25 (Activation)      (None, 61, 61, 64)   0           batch_normalization_25[0][0]     
__________________________________________________________________________________________________
activation_28 (Activation)      (None, 61, 61, 96)   0           batch_normalization_28[0][0]     
__________________________________________________________________________________________________
activation_29 (Activation)      (None, 61, 61, 64)   0           batch_normalization_29[0][0]     
__________________________________________________________________________________________________
mixed2 (Concatenate)            (None, 61, 61, 288)  0           activation_23[0][0]              
                                                                 activation_25[0][0]              
                                                                 activation_28[0][0]              
                                                                 activation_29[0][0]              
__________________________________________________________________________________________________
conv2d_62 (Conv2D)              (None, 61, 61, 64)   18432       mixed2[0][0]                     
__________________________________________________________________________________________________
batch_normalization_31 (BatchNo (None, 61, 61, 64)   192         conv2d_62[0][0]                  
__________________________________________________________________________________________________
activation_31 (Activation)      (None, 61, 61, 64)   0           batch_normalization_31[0][0]     
__________________________________________________________________________________________________
conv2d_63 (Conv2D)              (None, 61, 61, 96)   55296       activation_31[0][0]              
__________________________________________________________________________________________________
batch_normalization_32 (BatchNo (None, 61, 61, 96)   288         conv2d_63[0][0]                  
__________________________________________________________________________________________________
activation_32 (Activation)      (None, 61, 61, 96)   0           batch_normalization_32[0][0]     
__________________________________________________________________________________________________
conv2d_61 (Conv2D)              (None, 30, 30, 384)  995328      mixed2[0][0]                     
__________________________________________________________________________________________________
conv2d_64 (Conv2D)              (None, 30, 30, 96)   82944       activation_32[0][0]              
__________________________________________________________________________________________________
batch_normalization_30 (BatchNo (None, 30, 30, 384)  1152        conv2d_61[0][0]                  
__________________________________________________________________________________________________
batch_normalization_33 (BatchNo (None, 30, 30, 96)   288         conv2d_64[0][0]                  
__________________________________________________________________________________________________
activation_30 (Activation)      (None, 30, 30, 384)  0           batch_normalization_30[0][0]     
__________________________________________________________________________________________________
activation_33 (Activation)      (None, 30, 30, 96)   0           batch_normalization_33[0][0]     
__________________________________________________________________________________________________
max_pooling2d_12 (MaxPooling2D) (None, 30, 30, 288)  0           mixed2[0][0]                     
__________________________________________________________________________________________________
mixed3 (Concatenate)            (None, 30, 30, 768)  0           activation_30[0][0]              
                                                                 activation_33[0][0]              
                                                                 max_pooling2d_12[0][0]           
__________________________________________________________________________________________________
conv2d_69 (Conv2D)              (None, 30, 30, 128)  98304       mixed3[0][0]                     
__________________________________________________________________________________________________
batch_normalization_38 (BatchNo (None, 30, 30, 128)  384         conv2d_69[0][0]                  
__________________________________________________________________________________________________
activation_38 (Activation)      (None, 30, 30, 128)  0           batch_normalization_38[0][0]     
__________________________________________________________________________________________________
conv2d_70 (Conv2D)              (None, 30, 30, 128)  114688      activation_38[0][0]              
__________________________________________________________________________________________________
batch_normalization_39 (BatchNo (None, 30, 30, 128)  384         conv2d_70[0][0]                  
__________________________________________________________________________________________________
activation_39 (Activation)      (None, 30, 30, 128)  0           batch_normalization_39[0][0]     
__________________________________________________________________________________________________
conv2d_66 (Conv2D)              (None, 30, 30, 128)  98304       mixed3[0][0]                     
__________________________________________________________________________________________________
conv2d_71 (Conv2D)              (None, 30, 30, 128)  114688      activation_39[0][0]              
__________________________________________________________________________________________________
batch_normalization_35 (BatchNo (None, 30, 30, 128)  384         conv2d_66[0][0]                  
__________________________________________________________________________________________________
batch_normalization_40 (BatchNo (None, 30, 30, 128)  384         conv2d_71[0][0]                  
__________________________________________________________________________________________________
activation_35 (Activation)      (None, 30, 30, 128)  0           batch_normalization_35[0][0]     
__________________________________________________________________________________________________
activation_40 (Activation)      (None, 30, 30, 128)  0           batch_normalization_40[0][0]     
__________________________________________________________________________________________________
conv2d_67 (Conv2D)              (None, 30, 30, 128)  114688      activation_35[0][0]              
__________________________________________________________________________________________________
conv2d_72 (Conv2D)              (None, 30, 30, 128)  114688      activation_40[0][0]              
__________________________________________________________________________________________________
batch_normalization_36 (BatchNo (None, 30, 30, 128)  384         conv2d_67[0][0]                  
__________________________________________________________________________________________________
batch_normalization_41 (BatchNo (None, 30, 30, 128)  384         conv2d_72[0][0]                  
__________________________________________________________________________________________________
activation_36 (Activation)      (None, 30, 30, 128)  0           batch_normalization_36[0][0]     
__________________________________________________________________________________________________
activation_41 (Activation)      (None, 30, 30, 128)  0           batch_normalization_41[0][0]     
__________________________________________________________________________________________________
average_pooling2d_3 (AveragePoo (None, 30, 30, 768)  0           mixed3[0][0]                     
__________________________________________________________________________________________________
conv2d_65 (Conv2D)              (None, 30, 30, 192)  147456      mixed3[0][0]                     
__________________________________________________________________________________________________
conv2d_68 (Conv2D)              (None, 30, 30, 192)  172032      activation_36[0][0]              
__________________________________________________________________________________________________
conv2d_73 (Conv2D)              (None, 30, 30, 192)  172032      activation_41[0][0]              
__________________________________________________________________________________________________
conv2d_74 (Conv2D)              (None, 30, 30, 192)  147456      average_pooling2d_3[0][0]        
__________________________________________________________________________________________________
batch_normalization_34 (BatchNo (None, 30, 30, 192)  576         conv2d_65[0][0]                  
__________________________________________________________________________________________________
batch_normalization_37 (BatchNo (None, 30, 30, 192)  576         conv2d_68[0][0]                  
__________________________________________________________________________________________________
batch_normalization_42 (BatchNo (None, 30, 30, 192)  576         conv2d_73[0][0]                  
__________________________________________________________________________________________________
batch_normalization_43 (BatchNo (None, 30, 30, 192)  576         conv2d_74[0][0]                  
__________________________________________________________________________________________________
activation_34 (Activation)      (None, 30, 30, 192)  0           batch_normalization_34[0][0]     
__________________________________________________________________________________________________
activation_37 (Activation)      (None, 30, 30, 192)  0           batch_normalization_37[0][0]     
__________________________________________________________________________________________________
activation_42 (Activation)      (None, 30, 30, 192)  0           batch_normalization_42[0][0]     
__________________________________________________________________________________________________
activation_43 (Activation)      (None, 30, 30, 192)  0           batch_normalization_43[0][0]     
__________________________________________________________________________________________________
mixed4 (Concatenate)            (None, 30, 30, 768)  0           activation_34[0][0]              
                                                                 activation_37[0][0]              
                                                                 activation_42[0][0]              
                                                                 activation_43[0][0]              
__________________________________________________________________________________________________
conv2d_79 (Conv2D)              (None, 30, 30, 160)  122880      mixed4[0][0]                     
__________________________________________________________________________________________________
batch_normalization_48 (BatchNo (None, 30, 30, 160)  480         conv2d_79[0][0]                  
__________________________________________________________________________________________________
activation_48 (Activation)      (None, 30, 30, 160)  0           batch_normalization_48[0][0]     
__________________________________________________________________________________________________
conv2d_80 (Conv2D)              (None, 30, 30, 160)  179200      activation_48[0][0]              
__________________________________________________________________________________________________
batch_normalization_49 (BatchNo (None, 30, 30, 160)  480         conv2d_80[0][0]                  
__________________________________________________________________________________________________
activation_49 (Activation)      (None, 30, 30, 160)  0           batch_normalization_49[0][0]     
__________________________________________________________________________________________________
conv2d_76 (Conv2D)              (None, 30, 30, 160)  122880      mixed4[0][0]                     
__________________________________________________________________________________________________
conv2d_81 (Conv2D)              (None, 30, 30, 160)  179200      activation_49[0][0]              
__________________________________________________________________________________________________
batch_normalization_45 (BatchNo (None, 30, 30, 160)  480         conv2d_76[0][0]                  
__________________________________________________________________________________________________
batch_normalization_50 (BatchNo (None, 30, 30, 160)  480         conv2d_81[0][0]                  
__________________________________________________________________________________________________
activation_45 (Activation)      (None, 30, 30, 160)  0           batch_normalization_45[0][0]     
__________________________________________________________________________________________________
activation_50 (Activation)      (None, 30, 30, 160)  0           batch_normalization_50[0][0]     
__________________________________________________________________________________________________
conv2d_77 (Conv2D)              (None, 30, 30, 160)  179200      activation_45[0][0]              
__________________________________________________________________________________________________
conv2d_82 (Conv2D)              (None, 30, 30, 160)  179200      activation_50[0][0]              
__________________________________________________________________________________________________
batch_normalization_46 (BatchNo (None, 30, 30, 160)  480         conv2d_77[0][0]                  
__________________________________________________________________________________________________
batch_normalization_51 (BatchNo (None, 30, 30, 160)  480         conv2d_82[0][0]                  
__________________________________________________________________________________________________
activation_46 (Activation)      (None, 30, 30, 160)  0           batch_normalization_46[0][0]     
__________________________________________________________________________________________________
activation_51 (Activation)      (None, 30, 30, 160)  0           batch_normalization_51[0][0]     
__________________________________________________________________________________________________
average_pooling2d_4 (AveragePoo (None, 30, 30, 768)  0           mixed4[0][0]                     
__________________________________________________________________________________________________
conv2d_75 (Conv2D)              (None, 30, 30, 192)  147456      mixed4[0][0]                     
__________________________________________________________________________________________________
conv2d_78 (Conv2D)              (None, 30, 30, 192)  215040      activation_46[0][0]              
__________________________________________________________________________________________________
conv2d_83 (Conv2D)              (None, 30, 30, 192)  215040      activation_51[0][0]              
__________________________________________________________________________________________________
conv2d_84 (Conv2D)              (None, 30, 30, 192)  147456      average_pooling2d_4[0][0]        
__________________________________________________________________________________________________
batch_normalization_44 (BatchNo (None, 30, 30, 192)  576         conv2d_75[0][0]                  
__________________________________________________________________________________________________
batch_normalization_47 (BatchNo (None, 30, 30, 192)  576         conv2d_78[0][0]                  
__________________________________________________________________________________________________
batch_normalization_52 (BatchNo (None, 30, 30, 192)  576         conv2d_83[0][0]                  
__________________________________________________________________________________________________
batch_normalization_53 (BatchNo (None, 30, 30, 192)  576         conv2d_84[0][0]                  
__________________________________________________________________________________________________
activation_44 (Activation)      (None, 30, 30, 192)  0           batch_normalization_44[0][0]     
__________________________________________________________________________________________________
activation_47 (Activation)      (None, 30, 30, 192)  0           batch_normalization_47[0][0]     
__________________________________________________________________________________________________
activation_52 (Activation)      (None, 30, 30, 192)  0           batch_normalization_52[0][0]     
__________________________________________________________________________________________________
activation_53 (Activation)      (None, 30, 30, 192)  0           batch_normalization_53[0][0]     
__________________________________________________________________________________________________
mixed5 (Concatenate)            (None, 30, 30, 768)  0           activation_44[0][0]              
                                                                 activation_47[0][0]              
                                                                 activation_52[0][0]              
                                                                 activation_53[0][0]              
__________________________________________________________________________________________________
conv2d_89 (Conv2D)              (None, 30, 30, 160)  122880      mixed5[0][0]                     
__________________________________________________________________________________________________
batch_normalization_58 (BatchNo (None, 30, 30, 160)  480         conv2d_89[0][0]                  
__________________________________________________________________________________________________
activation_58 (Activation)      (None, 30, 30, 160)  0           batch_normalization_58[0][0]     
__________________________________________________________________________________________________
conv2d_90 (Conv2D)              (None, 30, 30, 160)  179200      activation_58[0][0]              
__________________________________________________________________________________________________
batch_normalization_59 (BatchNo (None, 30, 30, 160)  480         conv2d_90[0][0]                  
__________________________________________________________________________________________________
activation_59 (Activation)      (None, 30, 30, 160)  0           batch_normalization_59[0][0]     
__________________________________________________________________________________________________
conv2d_86 (Conv2D)              (None, 30, 30, 160)  122880      mixed5[0][0]                     
__________________________________________________________________________________________________
conv2d_91 (Conv2D)              (None, 30, 30, 160)  179200      activation_59[0][0]              
__________________________________________________________________________________________________
batch_normalization_55 (BatchNo (None, 30, 30, 160)  480         conv2d_86[0][0]                  
__________________________________________________________________________________________________
batch_normalization_60 (BatchNo (None, 30, 30, 160)  480         conv2d_91[0][0]                  
__________________________________________________________________________________________________
activation_55 (Activation)      (None, 30, 30, 160)  0           batch_normalization_55[0][0]     
__________________________________________________________________________________________________
activation_60 (Activation)      (None, 30, 30, 160)  0           batch_normalization_60[0][0]     
__________________________________________________________________________________________________
conv2d_87 (Conv2D)              (None, 30, 30, 160)  179200      activation_55[0][0]              
__________________________________________________________________________________________________
conv2d_92 (Conv2D)              (None, 30, 30, 160)  179200      activation_60[0][0]              
__________________________________________________________________________________________________
batch_normalization_56 (BatchNo (None, 30, 30, 160)  480         conv2d_87[0][0]                  
__________________________________________________________________________________________________
batch_normalization_61 (BatchNo (None, 30, 30, 160)  480         conv2d_92[0][0]                  
__________________________________________________________________________________________________
activation_56 (Activation)      (None, 30, 30, 160)  0           batch_normalization_56[0][0]     
__________________________________________________________________________________________________
activation_61 (Activation)      (None, 30, 30, 160)  0           batch_normalization_61[0][0]     
__________________________________________________________________________________________________
average_pooling2d_5 (AveragePoo (None, 30, 30, 768)  0           mixed5[0][0]                     
__________________________________________________________________________________________________
conv2d_85 (Conv2D)              (None, 30, 30, 192)  147456      mixed5[0][0]                     
__________________________________________________________________________________________________
conv2d_88 (Conv2D)              (None, 30, 30, 192)  215040      activation_56[0][0]              
__________________________________________________________________________________________________
conv2d_93 (Conv2D)              (None, 30, 30, 192)  215040      activation_61[0][0]              
__________________________________________________________________________________________________
conv2d_94 (Conv2D)              (None, 30, 30, 192)  147456      average_pooling2d_5[0][0]        
__________________________________________________________________________________________________
batch_normalization_54 (BatchNo (None, 30, 30, 192)  576         conv2d_85[0][0]                  
__________________________________________________________________________________________________
batch_normalization_57 (BatchNo (None, 30, 30, 192)  576         conv2d_88[0][0]                  
__________________________________________________________________________________________________
batch_normalization_62 (BatchNo (None, 30, 30, 192)  576         conv2d_93[0][0]                  
__________________________________________________________________________________________________
batch_normalization_63 (BatchNo (None, 30, 30, 192)  576         conv2d_94[0][0]                  
__________________________________________________________________________________________________
activation_54 (Activation)      (None, 30, 30, 192)  0           batch_normalization_54[0][0]     
__________________________________________________________________________________________________
activation_57 (Activation)      (None, 30, 30, 192)  0           batch_normalization_57[0][0]     
__________________________________________________________________________________________________
activation_62 (Activation)      (None, 30, 30, 192)  0           batch_normalization_62[0][0]     
__________________________________________________________________________________________________
activation_63 (Activation)      (None, 30, 30, 192)  0           batch_normalization_63[0][0]     
__________________________________________________________________________________________________
mixed6 (Concatenate)            (None, 30, 30, 768)  0           activation_54[0][0]              
                                                                 activation_57[0][0]              
                                                                 activation_62[0][0]              
                                                                 activation_63[0][0]              
__________________________________________________________________________________________________
conv2d_99 (Conv2D)              (None, 30, 30, 192)  147456      mixed6[0][0]                     
__________________________________________________________________________________________________
batch_normalization_68 (BatchNo (None, 30, 30, 192)  576         conv2d_99[0][0]                  
__________________________________________________________________________________________________
activation_68 (Activation)      (None, 30, 30, 192)  0           batch_normalization_68[0][0]     
__________________________________________________________________________________________________
conv2d_100 (Conv2D)             (None, 30, 30, 192)  258048      activation_68[0][0]              
__________________________________________________________________________________________________
batch_normalization_69 (BatchNo (None, 30, 30, 192)  576         conv2d_100[0][0]                 
__________________________________________________________________________________________________
activation_69 (Activation)      (None, 30, 30, 192)  0           batch_normalization_69[0][0]     
__________________________________________________________________________________________________
conv2d_96 (Conv2D)              (None, 30, 30, 192)  147456      mixed6[0][0]                     
__________________________________________________________________________________________________
conv2d_101 (Conv2D)             (None, 30, 30, 192)  258048      activation_69[0][0]              
__________________________________________________________________________________________________
batch_normalization_65 (BatchNo (None, 30, 30, 192)  576         conv2d_96[0][0]                  
__________________________________________________________________________________________________
batch_normalization_70 (BatchNo (None, 30, 30, 192)  576         conv2d_101[0][0]                 
__________________________________________________________________________________________________
activation_65 (Activation)      (None, 30, 30, 192)  0           batch_normalization_65[0][0]     
__________________________________________________________________________________________________
activation_70 (Activation)      (None, 30, 30, 192)  0           batch_normalization_70[0][0]     
__________________________________________________________________________________________________
conv2d_97 (Conv2D)              (None, 30, 30, 192)  258048      activation_65[0][0]              
__________________________________________________________________________________________________
conv2d_102 (Conv2D)             (None, 30, 30, 192)  258048      activation_70[0][0]              
__________________________________________________________________________________________________
batch_normalization_66 (BatchNo (None, 30, 30, 192)  576         conv2d_97[0][0]                  
__________________________________________________________________________________________________
batch_normalization_71 (BatchNo (None, 30, 30, 192)  576         conv2d_102[0][0]                 
__________________________________________________________________________________________________
activation_66 (Activation)      (None, 30, 30, 192)  0           batch_normalization_66[0][0]     
__________________________________________________________________________________________________
activation_71 (Activation)      (None, 30, 30, 192)  0           batch_normalization_71[0][0]     
__________________________________________________________________________________________________
average_pooling2d_6 (AveragePoo (None, 30, 30, 768)  0           mixed6[0][0]                     
__________________________________________________________________________________________________
conv2d_95 (Conv2D)              (None, 30, 30, 192)  147456      mixed6[0][0]                     
__________________________________________________________________________________________________
conv2d_98 (Conv2D)              (None, 30, 30, 192)  258048      activation_66[0][0]              
__________________________________________________________________________________________________
conv2d_103 (Conv2D)             (None, 30, 30, 192)  258048      activation_71[0][0]              
__________________________________________________________________________________________________
conv2d_104 (Conv2D)             (None, 30, 30, 192)  147456      average_pooling2d_6[0][0]        
__________________________________________________________________________________________________
batch_normalization_64 (BatchNo (None, 30, 30, 192)  576         conv2d_95[0][0]                  
__________________________________________________________________________________________________
batch_normalization_67 (BatchNo (None, 30, 30, 192)  576         conv2d_98[0][0]                  
__________________________________________________________________________________________________
batch_normalization_72 (BatchNo (None, 30, 30, 192)  576         conv2d_103[0][0]                 
__________________________________________________________________________________________________
batch_normalization_73 (BatchNo (None, 30, 30, 192)  576         conv2d_104[0][0]                 
__________________________________________________________________________________________________
activation_64 (Activation)      (None, 30, 30, 192)  0           batch_normalization_64[0][0]     
__________________________________________________________________________________________________
activation_67 (Activation)      (None, 30, 30, 192)  0           batch_normalization_67[0][0]     
__________________________________________________________________________________________________
activation_72 (Activation)      (None, 30, 30, 192)  0           batch_normalization_72[0][0]     
__________________________________________________________________________________________________
activation_73 (Activation)      (None, 30, 30, 192)  0           batch_normalization_73[0][0]     
__________________________________________________________________________________________________
mixed7 (Concatenate)            (None, 30, 30, 768)  0           activation_64[0][0]              
                                                                 activation_67[0][0]              
                                                                 activation_72[0][0]              
                                                                 activation_73[0][0]              
__________________________________________________________________________________________________
conv2d_107 (Conv2D)             (None, 30, 30, 192)  147456      mixed7[0][0]                     
__________________________________________________________________________________________________
batch_normalization_76 (BatchNo (None, 30, 30, 192)  576         conv2d_107[0][0]                 
__________________________________________________________________________________________________
activation_76 (Activation)      (None, 30, 30, 192)  0           batch_normalization_76[0][0]     
__________________________________________________________________________________________________
conv2d_108 (Conv2D)             (None, 30, 30, 192)  258048      activation_76[0][0]              
__________________________________________________________________________________________________
batch_normalization_77 (BatchNo (None, 30, 30, 192)  576         conv2d_108[0][0]                 
__________________________________________________________________________________________________
activation_77 (Activation)      (None, 30, 30, 192)  0           batch_normalization_77[0][0]     
__________________________________________________________________________________________________
conv2d_105 (Conv2D)             (None, 30, 30, 192)  147456      mixed7[0][0]                     
__________________________________________________________________________________________________
conv2d_109 (Conv2D)             (None, 30, 30, 192)  258048      activation_77[0][0]              
__________________________________________________________________________________________________
batch_normalization_74 (BatchNo (None, 30, 30, 192)  576         conv2d_105[0][0]                 
__________________________________________________________________________________________________
batch_normalization_78 (BatchNo (None, 30, 30, 192)  576         conv2d_109[0][0]                 
__________________________________________________________________________________________________
activation_74 (Activation)      (None, 30, 30, 192)  0           batch_normalization_74[0][0]     
__________________________________________________________________________________________________
activation_78 (Activation)      (None, 30, 30, 192)  0           batch_normalization_78[0][0]     
__________________________________________________________________________________________________
conv2d_106 (Conv2D)             (None, 14, 14, 320)  552960      activation_74[0][0]              
__________________________________________________________________________________________________
conv2d_110 (Conv2D)             (None, 14, 14, 192)  331776      activation_78[0][0]              
__________________________________________________________________________________________________
batch_normalization_75 (BatchNo (None, 14, 14, 320)  960         conv2d_106[0][0]                 
__________________________________________________________________________________________________
batch_normalization_79 (BatchNo (None, 14, 14, 192)  576         conv2d_110[0][0]                 
__________________________________________________________________________________________________
activation_75 (Activation)      (None, 14, 14, 320)  0           batch_normalization_75[0][0]     
__________________________________________________________________________________________________
activation_79 (Activation)      (None, 14, 14, 192)  0           batch_normalization_79[0][0]     
__________________________________________________________________________________________________
max_pooling2d_13 (MaxPooling2D) (None, 14, 14, 768)  0           mixed7[0][0]                     
__________________________________________________________________________________________________
mixed8 (Concatenate)            (None, 14, 14, 1280) 0           activation_75[0][0]              
                                                                 activation_79[0][0]              
                                                                 max_pooling2d_13[0][0]           
__________________________________________________________________________________________________
conv2d_115 (Conv2D)             (None, 14, 14, 448)  573440      mixed8[0][0]                     
__________________________________________________________________________________________________
batch_normalization_84 (BatchNo (None, 14, 14, 448)  1344        conv2d_115[0][0]                 
__________________________________________________________________________________________________
activation_84 (Activation)      (None, 14, 14, 448)  0           batch_normalization_84[0][0]     
__________________________________________________________________________________________________
conv2d_112 (Conv2D)             (None, 14, 14, 384)  491520      mixed8[0][0]                     
__________________________________________________________________________________________________
conv2d_116 (Conv2D)             (None, 14, 14, 384)  1548288     activation_84[0][0]              
__________________________________________________________________________________________________
batch_normalization_81 (BatchNo (None, 14, 14, 384)  1152        conv2d_112[0][0]                 
__________________________________________________________________________________________________
batch_normalization_85 (BatchNo (None, 14, 14, 384)  1152        conv2d_116[0][0]                 
__________________________________________________________________________________________________
activation_81 (Activation)      (None, 14, 14, 384)  0           batch_normalization_81[0][0]     
__________________________________________________________________________________________________
activation_85 (Activation)      (None, 14, 14, 384)  0           batch_normalization_85[0][0]     
__________________________________________________________________________________________________
conv2d_113 (Conv2D)             (None, 14, 14, 384)  442368      activation_81[0][0]              
__________________________________________________________________________________________________
conv2d_114 (Conv2D)             (None, 14, 14, 384)  442368      activation_81[0][0]              
__________________________________________________________________________________________________
conv2d_117 (Conv2D)             (None, 14, 14, 384)  442368      activation_85[0][0]              
__________________________________________________________________________________________________
conv2d_118 (Conv2D)             (None, 14, 14, 384)  442368      activation_85[0][0]              
__________________________________________________________________________________________________
average_pooling2d_7 (AveragePoo (None, 14, 14, 1280) 0           mixed8[0][0]                     
__________________________________________________________________________________________________
conv2d_111 (Conv2D)             (None, 14, 14, 320)  409600      mixed8[0][0]                     
__________________________________________________________________________________________________
batch_normalization_82 (BatchNo (None, 14, 14, 384)  1152        conv2d_113[0][0]                 
__________________________________________________________________________________________________
batch_normalization_83 (BatchNo (None, 14, 14, 384)  1152        conv2d_114[0][0]                 
__________________________________________________________________________________________________
batch_normalization_86 (BatchNo (None, 14, 14, 384)  1152        conv2d_117[0][0]                 
__________________________________________________________________________________________________
batch_normalization_87 (BatchNo (None, 14, 14, 384)  1152        conv2d_118[0][0]                 
__________________________________________________________________________________________________
conv2d_119 (Conv2D)             (None, 14, 14, 192)  245760      average_pooling2d_7[0][0]        
__________________________________________________________________________________________________
batch_normalization_80 (BatchNo (None, 14, 14, 320)  960         conv2d_111[0][0]                 
__________________________________________________________________________________________________
activation_82 (Activation)      (None, 14, 14, 384)  0           batch_normalization_82[0][0]     
__________________________________________________________________________________________________
activation_83 (Activation)      (None, 14, 14, 384)  0           batch_normalization_83[0][0]     
__________________________________________________________________________________________________
activation_86 (Activation)      (None, 14, 14, 384)  0           batch_normalization_86[0][0]     
__________________________________________________________________________________________________
activation_87 (Activation)      (None, 14, 14, 384)  0           batch_normalization_87[0][0]     
__________________________________________________________________________________________________
batch_normalization_88 (BatchNo (None, 14, 14, 192)  576         conv2d_119[0][0]                 
__________________________________________________________________________________________________
activation_80 (Activation)      (None, 14, 14, 320)  0           batch_normalization_80[0][0]     
__________________________________________________________________________________________________
mixed9_0 (Concatenate)          (None, 14, 14, 768)  0           activation_82[0][0]              
                                                                 activation_83[0][0]              
__________________________________________________________________________________________________
concatenate_5 (Concatenate)     (None, 14, 14, 768)  0           activation_86[0][0]              
                                                                 activation_87[0][0]              
__________________________________________________________________________________________________
activation_88 (Activation)      (None, 14, 14, 192)  0           batch_normalization_88[0][0]     
__________________________________________________________________________________________________
mixed9 (Concatenate)            (None, 14, 14, 2048) 0           activation_80[0][0]              
                                                                 mixed9_0[0][0]                   
                                                                 concatenate_5[0][0]              
                                                                 activation_88[0][0]              
__________________________________________________________________________________________________
conv2d_124 (Conv2D)             (None, 14, 14, 448)  917504      mixed9[0][0]                     
__________________________________________________________________________________________________
batch_normalization_93 (BatchNo (None, 14, 14, 448)  1344        conv2d_124[0][0]                 
__________________________________________________________________________________________________
activation_93 (Activation)      (None, 14, 14, 448)  0           batch_normalization_93[0][0]     
__________________________________________________________________________________________________
conv2d_121 (Conv2D)             (None, 14, 14, 384)  786432      mixed9[0][0]                     
__________________________________________________________________________________________________
conv2d_125 (Conv2D)             (None, 14, 14, 384)  1548288     activation_93[0][0]              
__________________________________________________________________________________________________
batch_normalization_90 (BatchNo (None, 14, 14, 384)  1152        conv2d_121[0][0]                 
__________________________________________________________________________________________________
batch_normalization_94 (BatchNo (None, 14, 14, 384)  1152        conv2d_125[0][0]                 
__________________________________________________________________________________________________
activation_90 (Activation)      (None, 14, 14, 384)  0           batch_normalization_90[0][0]     
__________________________________________________________________________________________________
activation_94 (Activation)      (None, 14, 14, 384)  0           batch_normalization_94[0][0]     
__________________________________________________________________________________________________
conv2d_122 (Conv2D)             (None, 14, 14, 384)  442368      activation_90[0][0]              
__________________________________________________________________________________________________
conv2d_123 (Conv2D)             (None, 14, 14, 384)  442368      activation_90[0][0]              
__________________________________________________________________________________________________
conv2d_126 (Conv2D)             (None, 14, 14, 384)  442368      activation_94[0][0]              
__________________________________________________________________________________________________
conv2d_127 (Conv2D)             (None, 14, 14, 384)  442368      activation_94[0][0]              
__________________________________________________________________________________________________
average_pooling2d_8 (AveragePoo (None, 14, 14, 2048) 0           mixed9[0][0]                     
__________________________________________________________________________________________________
conv2d_120 (Conv2D)             (None, 14, 14, 320)  655360      mixed9[0][0]                     
__________________________________________________________________________________________________
batch_normalization_91 (BatchNo (None, 14, 14, 384)  1152        conv2d_122[0][0]                 
__________________________________________________________________________________________________
batch_normalization_92 (BatchNo (None, 14, 14, 384)  1152        conv2d_123[0][0]                 
__________________________________________________________________________________________________
batch_normalization_95 (BatchNo (None, 14, 14, 384)  1152        conv2d_126[0][0]                 
__________________________________________________________________________________________________
batch_normalization_96 (BatchNo (None, 14, 14, 384)  1152        conv2d_127[0][0]                 
__________________________________________________________________________________________________
conv2d_128 (Conv2D)             (None, 14, 14, 192)  393216      average_pooling2d_8[0][0]        
__________________________________________________________________________________________________
batch_normalization_89 (BatchNo (None, 14, 14, 320)  960         conv2d_120[0][0]                 
__________________________________________________________________________________________________
activation_91 (Activation)      (None, 14, 14, 384)  0           batch_normalization_91[0][0]     
__________________________________________________________________________________________________
activation_92 (Activation)      (None, 14, 14, 384)  0           batch_normalization_92[0][0]     
__________________________________________________________________________________________________
activation_95 (Activation)      (None, 14, 14, 384)  0           batch_normalization_95[0][0]     
__________________________________________________________________________________________________
activation_96 (Activation)      (None, 14, 14, 384)  0           batch_normalization_96[0][0]     
__________________________________________________________________________________________________
batch_normalization_97 (BatchNo (None, 14, 14, 192)  576         conv2d_128[0][0]                 
__________________________________________________________________________________________________
activation_89 (Activation)      (None, 14, 14, 320)  0           batch_normalization_89[0][0]     
__________________________________________________________________________________________________
mixed9_1 (Concatenate)          (None, 14, 14, 768)  0           activation_91[0][0]              
                                                                 activation_92[0][0]              
__________________________________________________________________________________________________
concatenate_6 (Concatenate)     (None, 14, 14, 768)  0           activation_95[0][0]              
                                                                 activation_96[0][0]              
__________________________________________________________________________________________________
activation_97 (Activation)      (None, 14, 14, 192)  0           batch_normalization_97[0][0]     
__________________________________________________________________________________________________
mixed10 (Concatenate)           (None, 14, 14, 2048) 0           activation_89[0][0]              
                                                                 mixed9_1[0][0]                   
                                                                 concatenate_6[0][0]              
                                                                 activation_97[0][0]              
__________________________________________________________________________________________________
global_average_pooling2d_1 (Glo (None, 2048)         0           mixed10[0][0]                    
__________________________________________________________________________________________________
dense_4 (Dense)                 (None, 516)          1057284     global_average_pooling2d_1[0][0] 
__________________________________________________________________________________________________
dropout_2 (Dropout)             (None, 516)          0           dense_4[0][0]                    
__________________________________________________________________________________________________
dense_5 (Dense)                 (None, 256)          132352      dropout_2[0][0]                  
__________________________________________________________________________________________________
dropout_3 (Dropout)             (None, 256)          0           dense_5[0][0]                    
__________________________________________________________________________________________________
dense_6 (Dense)                 (None, 64)           16448       dropout_3[0][0]                  
__________________________________________________________________________________________________
dense_7 (Dense)                 (None, 2)            130         dense_6[0][0]                    
==================================================================================================
Total params: 23,008,998
Trainable params: 3,141,574
Non-trainable params: 19,867,424
__________________________________________________________________________________________________
None
In [43]:
# Define modifier to replace the sigmoid function of the last layer to a linear function
def model_modifier(m):
    m.layers[-1].activation = tf.keras.activations.linear

# Define losses functions. 0 is the index for a normal MRI
loss_normal = lambda output: K.mean(output[:, 0])

# Define losses functions. 2 is the index for a PVNH MRI
loss_PVNH = lambda output: K.mean(output[:, 1])
    
# Create Gradcam object
gradcam = Gradcam(model, model_modifier)

# Create Saliency object
saliency = Saliency(model, model_modifier)

# Iterate through the MRIs in test set

# Set background to white color
plt.rcParams['axes.facecolor']='white'
plt.rcParams['figure.facecolor']='white'
plt.rcParams['figure.edgecolor']='white'




print('\n \n' + '\033[1m' + 'EACH ORIGINAL MRI IS ANALYZED WITH TWO METHODS: CLASS ACTIVATION MAP (UPPER ROW) AND SALIENCY MAP (LOWER ROW)' + '\033[0m' + '\n')
print('\033[1m' + 'EACH MAP IS SUPERIMPOSED ON THE ORIGINAL MRI WITH A TRANSPARENCY THAT IS INVERSELY PROPORTIONAL TO THE ESTIMATED PROBABILITY OF THE MRI BELONGING TO THAT CATEGORY (NORMAL MRI OR PERIVENTRICULAR NODULAR HETEROTOPIA) \n \nHIGHER ESTIMATED PROBABILITIES PRODUCE CLEARLY SEEN MAPS OVERLAID ON THE ORIGINAL MRI AND LOWER ESTIMATED PROBABILITIES PRODUCE VERY TRANSPARENT OR NOT APPRECIABLE MAPS OVERLAID ON THE ORIGINAL MRI' + '\033[0m'+ '\n')


for i in range(20):
    
    # Print spaces to separate from the next image
    print('\n \n \n \n \n \n')
  
    # Print real classification of the image
    if y_true[i]==0:
        real_classification='Normal MRI'
    else:
        real_classification='PVNH'
        
    print('\033[1m' + 'REAL CLASSIFICATION OF THE IMAGE: {}'.format(real_classification) + '\033[0m')
   
    # Print model classification and model probability of MCD
    if y_predInceptionV3[i]==0:
        predicted_classification='Normal MRI'
    else:
        predicted_classification='PVNH'   
    
    print('\033[1m' + 'MODEL CLASSIFICATION OF THE IMAGE: {}'.format(predicted_classification)  + '\033[0m \n') 
    print('\033[1m' + '   Prob. Normal MRI: {:.4f}    '.format(valInceptionV3[i][0]) + 'Prob. PVNH: {:.4f}'.format(valInceptionV3[i][1]) + '\033[0m')

    
    # Arrays to plot
    original_image=shuffled_val_X[i]
    list_heatmaps=[
        # GradCam heatmap for normal MRI
        normalize(gradcam(loss_normal, shuffled_val_X[i])),
        # GradCam heatmap for PVNH
        normalize(gradcam(loss_PVNH, shuffled_val_X[i])),
        
        # Saliency heatmap for normal MRI
        normalize(saliency(loss_normal, seed_input=np.expand_dims(shuffled_val_X[i], axis=0), smooth_noise=0.2)),
        # Saliency heatmap for PVNH
        normalize(saliency(loss_PVNH, seed_input=np.expand_dims(shuffled_val_X[i], axis=0), smooth_noise=0.2))
    ]
    
    # Define figure
    f=plt.figure(figsize=(20, 8))

    # Define the image grid
    grid = ImageGrid(f, 111,
                nrows_ncols=(2, 2),
                axes_pad=0.05,
                share_all=True,
                cbar_location="right",
                cbar_mode=None,
                cbar_size="2%",
                cbar_pad=0.15)

    
    # Iterate over the graphs
    for j, axis in enumerate(grid):
        # Plot original 
        im=axis.imshow(original_image)
        im=axis.imshow(list_heatmaps[j][0], cmap='jet', alpha=0.5*valInceptionV3[i][j%2])
        im=axis.set_xticks([])
        im=axis.set_yticks([])
    
    # Create scalarmappable for obtaining the colorbar from 0 to 1
    sm = plt.cm.ScalarMappable(cmap='jet', norm=plt.Normalize(vmin=0, vmax=1))
    plt.colorbar(sm)
    plt.show()
 
EACH ORIGINAL MRI IS ANALYZED WITH TWO METHODS: CLASS ACTIVATION MAP (UPPER ROW) AND SALIENCY MAP (LOWER ROW)

EACH MAP IS SUPERIMPOSED ON THE ORIGINAL MRI WITH A TRANSPARENCY THAT IS INVERSELY PROPORTIONAL TO THE ESTIMATED PROBABILITY OF THE MRI BELONGING TO THAT CATEGORY (NORMAL MRI OR PERIVENTRICULAR NODULAR HETEROTOPIA) 
 
HIGHER ESTIMATED PROBABILITIES PRODUCE CLEARLY SEEN MAPS OVERLAID ON THE ORIGINAL MRI AND LOWER ESTIMATED PROBABILITIES PRODUCE VERY TRANSPARENT OR NOT APPRECIABLE MAPS OVERLAID ON THE ORIGINAL MRI


 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0001    Prob. PVNH: 0.9999
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9931    Prob. PVNH: 0.0069
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.3437    Prob. PVNH: 0.6563
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0001    Prob. PVNH: 0.9999
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0001    Prob. PVNH: 0.9999
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0002    Prob. PVNH: 0.9998
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9990    Prob. PVNH: 0.0010
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0001    Prob. PVNH: 0.9999
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9595    Prob. PVNH: 0.0405

ResNet50

Define the convolutional neural network

In [44]:
# Use ResNet50 as the base model
base_model = tf.keras.applications.resnet50.ResNet50(layers=tf.keras.layers, weights='imagenet', include_top = False, input_shape=train_X.shape[1:])

# Get the output of the base model
x = base_model.output

# Add a 2D global average pooling layer
x = GlobalAveragePooling2D()(x)

## Add the fully-connected layers
x = Dense(units=516, activation='relu')(x)
x = Dropout(rate=0.5)(x)
x = Dense(units=256, activation='relu')(x)
x = Dropout(rate=0.5)(x)
x = Dense(units=64, activation='relu')(x)

# Ad a layer for multiclass classification
predictions = Dense(units = 2, activation = 'softmax')(x)

# Define the model to be trained
model = Model(inputs = base_model.input, outputs = predictions)

# Train the last 20 layers in the base model
for layer in base_model.layers[:-20]:
    layer.trainable = False
for layer in base_model.layers[-20:]:
    layer.trainable = True
    
# Compile the model
opt = Adam(lr = 0.0001)
model.compile(optimizer = opt, loss = 'categorical_crossentropy', metrics = ['accuracy'])

# Fit and test the model in the validation set
historyResNet50 = model.fit(shuffled_train_X, shuffled_train_y, validation_data = [shuffled_val_X, shuffled_val_y], epochs = 50, batch_size = 32)




print('\n')
print('\n')
# AUC in train and validation set
auc_trainResNet50 = roc_auc_score(shuffled_train_y, model.predict(shuffled_train_X))
print('The AUC in the train set is {:.4f}.'.format(auc_trainResNet50))
print('\n')
print('\n')
auc_validResNet50 = roc_auc_score(shuffled_val_y, model.predict(shuffled_val_X))
print('The AUC in the validation set is {:.4f}.'.format(auc_validResNet50))

print('\n')
print('\n')
print('\n')
print('\n')

# Figure size and colors
mpl.rcParams['figure.figsize'] = (20,24)
plt.rcParams['axes.facecolor']='white'
plt.rcParams['figure.facecolor']='lightgreen'
plt.rcParams['figure.edgecolor']='black'

# Plot history of loss during training
plt.plot(historyResNet50.history['loss'], label='Train', color='red')
plt.plot(historyResNet50.history['val_loss'], label='Validation', color='blue')
plt.title('Loss in train and validation set', size=30)
plt.xlabel('Epoch', size=24)
plt.ylabel('Categorical cross-entropy loss', size=24)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(fontsize=20)
plt.ylim(ymin=0, ymax=5)
plt.grid(b=None)
plt.show()

print('\n')
print('\n')
print('\n')
print('\n')

# Plot history of accuracy
plt.plot(historyResNet50.history['accuracy'], label='Train', color='red')
plt.plot(historyResNet50.history['val_accuracy'], label='Validation', color='blue')
plt.title('Accuracy in train and validation set', size=30)
plt.xlabel('Epoch', size=24)
plt.ylabel('Accuracy', size=24)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(fontsize=20)
plt.ylim(ymin=0, ymax=1.1)
plt.grid(b=None)
plt.show()
Train on 5305 samples, validate on 334 samples
Epoch 1/50
5305/5305 [==============================] - 36s 7ms/sample - loss: 0.5600 - accuracy: 0.7078 - val_loss: 0.6132 - val_accuracy: 0.6467
Epoch 2/50
5305/5305 [==============================] - 30s 6ms/sample - loss: 0.4261 - accuracy: 0.8038 - val_loss: 0.7432 - val_accuracy: 0.5329
Epoch 3/50
5305/5305 [==============================] - 30s 6ms/sample - loss: 0.3533 - accuracy: 0.8484 - val_loss: 0.9147 - val_accuracy: 0.6677
Epoch 4/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.2897 - accuracy: 0.8775 - val_loss: 0.5474 - val_accuracy: 0.7575
Epoch 5/50
5305/5305 [==============================] - 34s 6ms/sample - loss: 0.2466 - accuracy: 0.8965 - val_loss: 0.6486 - val_accuracy: 0.6617
Epoch 6/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.1928 - accuracy: 0.9178 - val_loss: 2.2005 - val_accuracy: 0.5778
Epoch 7/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.1649 - accuracy: 0.9353 - val_loss: 1.2935 - val_accuracy: 0.7036
Epoch 8/50
5305/5305 [==============================] - 34s 6ms/sample - loss: 0.1345 - accuracy: 0.9476 - val_loss: 1.4485 - val_accuracy: 0.5719
Epoch 9/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.1322 - accuracy: 0.9489 - val_loss: 2.7698 - val_accuracy: 0.5030
Epoch 10/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.1014 - accuracy: 0.9589 - val_loss: 5.2562 - val_accuracy: 0.5030
Epoch 11/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.1175 - accuracy: 0.9538 - val_loss: 0.5972 - val_accuracy: 0.8234
Epoch 12/50
5305/5305 [==============================] - 33s 6ms/sample - loss: 0.0920 - accuracy: 0.9657 - val_loss: 1.5605 - val_accuracy: 0.5509
Epoch 13/50
5305/5305 [==============================] - 32s 6ms/sample - loss: 0.0831 - accuracy: 0.9695 - val_loss: 4.6347 - val_accuracy: 0.6287
Epoch 14/50
5305/5305 [==============================] - 30s 6ms/sample - loss: 0.0748 - accuracy: 0.9742 - val_loss: 0.8176 - val_accuracy: 0.7216
Epoch 15/50
5305/5305 [==============================] - 30s 6ms/sample - loss: 0.0710 - accuracy: 0.9729 - val_loss: 0.6211 - val_accuracy: 0.8054
Epoch 16/50
5305/5305 [==============================] - 35s 7ms/sample - loss: 0.0697 - accuracy: 0.9768 - val_loss: 0.7978 - val_accuracy: 0.7335
Epoch 17/50
5305/5305 [==============================] - 32s 6ms/sample - loss: 0.0631 - accuracy: 0.9751 - val_loss: 4.5056 - val_accuracy: 0.5090
Epoch 18/50
5305/5305 [==============================] - 30s 6ms/sample - loss: 0.0558 - accuracy: 0.9785 - val_loss: 3.3046 - val_accuracy: 0.6557
Epoch 19/50
5305/5305 [==============================] - 30s 6ms/sample - loss: 0.0557 - accuracy: 0.9785 - val_loss: 0.7541 - val_accuracy: 0.7994
Epoch 20/50
5305/5305 [==============================] - 33s 6ms/sample - loss: 0.0386 - accuracy: 0.9857 - val_loss: 6.1502 - val_accuracy: 0.4012
Epoch 21/50
5305/5305 [==============================] - 32s 6ms/sample - loss: 0.0533 - accuracy: 0.9813 - val_loss: 0.9487 - val_accuracy: 0.8024
Epoch 22/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0474 - accuracy: 0.9836 - val_loss: 0.9567 - val_accuracy: 0.7455
Epoch 23/50
5305/5305 [==============================] - 34s 6ms/sample - loss: 0.0356 - accuracy: 0.9885 - val_loss: 1.0411 - val_accuracy: 0.8144
Epoch 24/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0398 - accuracy: 0.9876 - val_loss: 1.1238 - val_accuracy: 0.6587
Epoch 25/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0323 - accuracy: 0.9866 - val_loss: 4.5976 - val_accuracy: 0.6317
Epoch 26/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0353 - accuracy: 0.9879 - val_loss: 0.9609 - val_accuracy: 0.8443
Epoch 27/50
5305/5305 [==============================] - 34s 6ms/sample - loss: 0.0389 - accuracy: 0.9862 - val_loss: 1.3003 - val_accuracy: 0.7216
Epoch 28/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0312 - accuracy: 0.9887 - val_loss: 1.1213 - val_accuracy: 0.7126
Epoch 29/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0263 - accuracy: 0.9913 - val_loss: 1.4458 - val_accuracy: 0.6737
Epoch 30/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0342 - accuracy: 0.9891 - val_loss: 1.9546 - val_accuracy: 0.5599
Epoch 31/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0145 - accuracy: 0.9959 - val_loss: 5.9296 - val_accuracy: 0.6647
Epoch 32/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0363 - accuracy: 0.9885 - val_loss: 1.2575 - val_accuracy: 0.7365
Epoch 33/50
5305/5305 [==============================] - 34s 6ms/sample - loss: 0.0272 - accuracy: 0.9893 - val_loss: 2.2318 - val_accuracy: 0.6048
Epoch 34/50
5305/5305 [==============================] - 32s 6ms/sample - loss: 0.0208 - accuracy: 0.9942 - val_loss: 1.4451 - val_accuracy: 0.8323
Epoch 35/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0328 - accuracy: 0.9877 - val_loss: 7.6404 - val_accuracy: 0.5150
Epoch 36/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0263 - accuracy: 0.9911 - val_loss: 1.6796 - val_accuracy: 0.7335
Epoch 37/50
5305/5305 [==============================] - 33s 6ms/sample - loss: 0.0281 - accuracy: 0.9904 - val_loss: 1.9820 - val_accuracy: 0.7335
Epoch 38/50
5305/5305 [==============================] - 34s 6ms/sample - loss: 0.0224 - accuracy: 0.9926 - val_loss: 0.9054 - val_accuracy: 0.8443
Epoch 39/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0240 - accuracy: 0.9919 - val_loss: 1.1093 - val_accuracy: 0.6377
Epoch 40/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0239 - accuracy: 0.9917 - val_loss: 1.4153 - val_accuracy: 0.7665
Epoch 41/50
5305/5305 [==============================] - 34s 6ms/sample - loss: 0.0343 - accuracy: 0.9885 - val_loss: 3.6884 - val_accuracy: 0.6587
Epoch 42/50
5305/5305 [==============================] - 32s 6ms/sample - loss: 0.0275 - accuracy: 0.9915 - val_loss: 2.5969 - val_accuracy: 0.7006
Epoch 43/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0107 - accuracy: 0.9955 - val_loss: 1.0956 - val_accuracy: 0.8353
Epoch 44/50
5305/5305 [==============================] - 30s 6ms/sample - loss: 0.0280 - accuracy: 0.9904 - val_loss: 1.7000 - val_accuracy: 0.8144
Epoch 45/50
5305/5305 [==============================] - 32s 6ms/sample - loss: 0.0237 - accuracy: 0.9913 - val_loss: 1.8730 - val_accuracy: 0.6048
Epoch 46/50
5305/5305 [==============================] - 34s 6ms/sample - loss: 0.0297 - accuracy: 0.9902 - val_loss: 1.2130 - val_accuracy: 0.7365
Epoch 47/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0043 - accuracy: 0.9985 - val_loss: 3.4293 - val_accuracy: 0.7395
Epoch 48/50
5305/5305 [==============================] - 31s 6ms/sample - loss: 0.0122 - accuracy: 0.9945 - val_loss: 9.5770 - val_accuracy: 0.6138
Epoch 49/50
5305/5305 [==============================] - 33s 6ms/sample - loss: 0.0313 - accuracy: 0.9904 - val_loss: 1.2248 - val_accuracy: 0.7635
Epoch 50/50
5305/5305 [==============================] - 32s 6ms/sample - loss: 0.0143 - accuracy: 0.9953 - val_loss: 1.3786 - val_accuracy: 0.6587




The AUC in the train set is 0.9793.




The AUC in the validation set is 0.7618.















In [45]:
# Generate predictions in the form of probabilities for the validation set
valResNet50 = model.predict(shuffled_val_X, batch_size = 32)

# Generate the confusion matrix in the validation set
y_true = np.argmax(shuffled_val_y, axis=1)
y_predResNet50 = np.argmax(valResNet50, axis=1)

# Confusion matrix
pd.DataFrame(confusion_matrix(y_true, y_predResNet50), index=['True: Normal', 'True: PVNH'], columns=['Prediction: Normal', 'Prediction: PVNH']).T
Out[45]:
True: Normal True: PVNH
Prediction: Normal 115 70
Prediction: PVNH 44 105
In [46]:
# Calculate accuracy in the validation set
accuracy_ResNet50 = accuracy_score(y_true=y_true, y_pred=y_predResNet50)
print('The accuracy in the validation set is {:.4f}.'.format(accuracy_ResNet50))
The accuracy in the validation set is 0.6587.
In [47]:
# Calculate AUC in the validation set
auc_validResNet50 = roc_auc_score(shuffled_val_y, model.predict(shuffled_val_X))
print('The AUC in the validation set is {:.4f}.'.format(auc_validResNet50))
The AUC in the validation set is 0.7618.
In [48]:
# Classification report
print(classification_report(y_true, y_predResNet50, target_names=['Normal MRI', 'PVNH']))
              precision    recall  f1-score   support

  Normal MRI       0.62      0.72      0.67       159
        PVNH       0.70      0.60      0.65       175

    accuracy                           0.66       334
   macro avg       0.66      0.66      0.66       334
weighted avg       0.67      0.66      0.66       334

Save model ResNet50

In [49]:
# Serialize model to JSON
model_json = model.to_json()
with open("ResNet50.json", "w") as json_file:
    json_file.write(model_json)
# Serialize weights to HDF5
model.save_weights("ResNet50.h5")

Model visualization

In [50]:
# Visualize the structure and layers of the model
model.layers
Out[50]:
[<tensorflow.python.keras.engine.input_layer.InputLayer at 0x7f21ac5291d0>,
 <tensorflow.python.keras.layers.convolutional.ZeroPadding2D at 0x7f21ac5292b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac5296a0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac529cf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac529cc0>,
 <tensorflow.python.keras.layers.convolutional.ZeroPadding2D at 0x7f21ac529908>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f21ac52a1d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac4ea630>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac4ebf98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac4d7d30>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac4d7c18>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22442d4ef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22442ddf28>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac500f60>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22442dd128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac4ebb70>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2244287ba8>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f2244287b70>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2244287fd0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2244287c18>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22442b4f60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f224423d668>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f224423d940>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2244268e10>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2244268dd8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2244272128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f224419f588>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f224419f550>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f224419f8d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f224419f978>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22440cac50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22440d2b70>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22440d20b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f224407f7f0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f224407f7b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f224407fb38>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22440aaf28>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f22440aaef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22440b2240>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f224405e9e8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2244068518>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c7c9da0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c7d00b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c77e518>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c783048>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22440b22b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c77e1d0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f224405ea20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c7a9c50>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f222c7a9c18>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c7a9ef0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c7ae780>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c61e748>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c61e710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c61e9e8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c5caeb8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c5cae80>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c5d31d0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c580630>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f222c5805f8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c580978>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c580a20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c5abcf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c5b3c18>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c5b3160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c560898>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c560860>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c560be0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c40cfd0>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f222c40cc88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c415048>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c415358>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c3c1ac8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c3c1a90>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c3c1e10>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c3edda0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c3f4d30>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c3f4080>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c3a19b0>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f222c3a1978>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c3a1dd8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c355f98>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c355f60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c24c320>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c243710>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c26ef60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c26ef28>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c3a1da0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c277278>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c34fcf8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c1a36d8>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f222c1a36a0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c1a3a20>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c1a3ac8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c151da0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c158cc0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c158208>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c105940>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c105908>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c105c88>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c12fc88>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f222c132b70>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c1320f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c132400>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c0a3b70>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c0a3b38>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c0a3dd8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222478fe48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2224798dd8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2224798128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2224706a58>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f2224706a20>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2224706e80>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2224706e48>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2224732da0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2224738518>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22247387f0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22246e7cc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22246e7c88>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22246e7978>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222468deb8>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f2224699ef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22246990f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2224699780>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2224605ef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2224605eb8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222460f5c0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222453a6a0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222453a668>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222453a9e8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2224568dd8>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f2224568da0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222456e0b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222456e160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222449d8d0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222449d898>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222449db70>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2224447c50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222444ab38>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222444a0b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22243fc7b8>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f22243fc780>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22243fcb00>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2224434da0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2224434d68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22243e4128>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22243dc518>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22242cad68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22242cad30>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22243fcba8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22242caa20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2224427be0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22242f1f60>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f222423df98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222423d198>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222423d828>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222426af98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222426af60>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2224270668>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222421f748>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222421f710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222421fa90>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22241c9e80>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f22241c9e48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22241d4160>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22241d4208>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222417d978>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222417d940>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222417dcc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22241abcf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22241b4be0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22241b4160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222415f860>,
 <tensorflow.python.keras.layers.merge.Add at 0x7f222415f828>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222415fba8>,
 <tensorflow.python.keras.layers.pooling.GlobalAveragePooling2D at 0x7f2224055e80>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f21ac529198>,
 <tensorflow.python.keras.layers.core.Dropout at 0x7f21ac794080>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f21ac7a6f60>,
 <tensorflow.python.keras.layers.core.Dropout at 0x7f21ac7a6f98>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f21ac7a8710>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f21ac7b0d68>]
In [51]:
# Visualize the structure and layers of the model
print(model.summary())
Model: "model_82"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_3 (InputLayer)            [(None, 512, 512, 3) 0                                            
__________________________________________________________________________________________________
conv1_pad (ZeroPadding2D)       (None, 518, 518, 3)  0           input_3[0][0]                    
__________________________________________________________________________________________________
conv1_conv (Conv2D)             (None, 256, 256, 64) 9472        conv1_pad[0][0]                  
__________________________________________________________________________________________________
conv1_bn (BatchNormalization)   (None, 256, 256, 64) 256         conv1_conv[0][0]                 
__________________________________________________________________________________________________
conv1_relu (Activation)         (None, 256, 256, 64) 0           conv1_bn[0][0]                   
__________________________________________________________________________________________________
pool1_pad (ZeroPadding2D)       (None, 258, 258, 64) 0           conv1_relu[0][0]                 
__________________________________________________________________________________________________
pool1_pool (MaxPooling2D)       (None, 128, 128, 64) 0           pool1_pad[0][0]                  
__________________________________________________________________________________________________
conv2_block1_1_conv (Conv2D)    (None, 128, 128, 64) 4160        pool1_pool[0][0]                 
__________________________________________________________________________________________________
conv2_block1_1_bn (BatchNormali (None, 128, 128, 64) 256         conv2_block1_1_conv[0][0]        
__________________________________________________________________________________________________
conv2_block1_1_relu (Activation (None, 128, 128, 64) 0           conv2_block1_1_bn[0][0]          
__________________________________________________________________________________________________
conv2_block1_2_conv (Conv2D)    (None, 128, 128, 64) 36928       conv2_block1_1_relu[0][0]        
__________________________________________________________________________________________________
conv2_block1_2_bn (BatchNormali (None, 128, 128, 64) 256         conv2_block1_2_conv[0][0]        
__________________________________________________________________________________________________
conv2_block1_2_relu (Activation (None, 128, 128, 64) 0           conv2_block1_2_bn[0][0]          
__________________________________________________________________________________________________
conv2_block1_0_conv (Conv2D)    (None, 128, 128, 256 16640       pool1_pool[0][0]                 
__________________________________________________________________________________________________
conv2_block1_3_conv (Conv2D)    (None, 128, 128, 256 16640       conv2_block1_2_relu[0][0]        
__________________________________________________________________________________________________
conv2_block1_0_bn (BatchNormali (None, 128, 128, 256 1024        conv2_block1_0_conv[0][0]        
__________________________________________________________________________________________________
conv2_block1_3_bn (BatchNormali (None, 128, 128, 256 1024        conv2_block1_3_conv[0][0]        
__________________________________________________________________________________________________
conv2_block1_add (Add)          (None, 128, 128, 256 0           conv2_block1_0_bn[0][0]          
                                                                 conv2_block1_3_bn[0][0]          
__________________________________________________________________________________________________
conv2_block1_out (Activation)   (None, 128, 128, 256 0           conv2_block1_add[0][0]           
__________________________________________________________________________________________________
conv2_block2_1_conv (Conv2D)    (None, 128, 128, 64) 16448       conv2_block1_out[0][0]           
__________________________________________________________________________________________________
conv2_block2_1_bn (BatchNormali (None, 128, 128, 64) 256         conv2_block2_1_conv[0][0]        
__________________________________________________________________________________________________
conv2_block2_1_relu (Activation (None, 128, 128, 64) 0           conv2_block2_1_bn[0][0]          
__________________________________________________________________________________________________
conv2_block2_2_conv (Conv2D)    (None, 128, 128, 64) 36928       conv2_block2_1_relu[0][0]        
__________________________________________________________________________________________________
conv2_block2_2_bn (BatchNormali (None, 128, 128, 64) 256         conv2_block2_2_conv[0][0]        
__________________________________________________________________________________________________
conv2_block2_2_relu (Activation (None, 128, 128, 64) 0           conv2_block2_2_bn[0][0]          
__________________________________________________________________________________________________
conv2_block2_3_conv (Conv2D)    (None, 128, 128, 256 16640       conv2_block2_2_relu[0][0]        
__________________________________________________________________________________________________
conv2_block2_3_bn (BatchNormali (None, 128, 128, 256 1024        conv2_block2_3_conv[0][0]        
__________________________________________________________________________________________________
conv2_block2_add (Add)          (None, 128, 128, 256 0           conv2_block1_out[0][0]           
                                                                 conv2_block2_3_bn[0][0]          
__________________________________________________________________________________________________
conv2_block2_out (Activation)   (None, 128, 128, 256 0           conv2_block2_add[0][0]           
__________________________________________________________________________________________________
conv2_block3_1_conv (Conv2D)    (None, 128, 128, 64) 16448       conv2_block2_out[0][0]           
__________________________________________________________________________________________________
conv2_block3_1_bn (BatchNormali (None, 128, 128, 64) 256         conv2_block3_1_conv[0][0]        
__________________________________________________________________________________________________
conv2_block3_1_relu (Activation (None, 128, 128, 64) 0           conv2_block3_1_bn[0][0]          
__________________________________________________________________________________________________
conv2_block3_2_conv (Conv2D)    (None, 128, 128, 64) 36928       conv2_block3_1_relu[0][0]        
__________________________________________________________________________________________________
conv2_block3_2_bn (BatchNormali (None, 128, 128, 64) 256         conv2_block3_2_conv[0][0]        
__________________________________________________________________________________________________
conv2_block3_2_relu (Activation (None, 128, 128, 64) 0           conv2_block3_2_bn[0][0]          
__________________________________________________________________________________________________
conv2_block3_3_conv (Conv2D)    (None, 128, 128, 256 16640       conv2_block3_2_relu[0][0]        
__________________________________________________________________________________________________
conv2_block3_3_bn (BatchNormali (None, 128, 128, 256 1024        conv2_block3_3_conv[0][0]        
__________________________________________________________________________________________________
conv2_block3_add (Add)          (None, 128, 128, 256 0           conv2_block2_out[0][0]           
                                                                 conv2_block3_3_bn[0][0]          
__________________________________________________________________________________________________
conv2_block3_out (Activation)   (None, 128, 128, 256 0           conv2_block3_add[0][0]           
__________________________________________________________________________________________________
conv3_block1_1_conv (Conv2D)    (None, 64, 64, 128)  32896       conv2_block3_out[0][0]           
__________________________________________________________________________________________________
conv3_block1_1_bn (BatchNormali (None, 64, 64, 128)  512         conv3_block1_1_conv[0][0]        
__________________________________________________________________________________________________
conv3_block1_1_relu (Activation (None, 64, 64, 128)  0           conv3_block1_1_bn[0][0]          
__________________________________________________________________________________________________
conv3_block1_2_conv (Conv2D)    (None, 64, 64, 128)  147584      conv3_block1_1_relu[0][0]        
__________________________________________________________________________________________________
conv3_block1_2_bn (BatchNormali (None, 64, 64, 128)  512         conv3_block1_2_conv[0][0]        
__________________________________________________________________________________________________
conv3_block1_2_relu (Activation (None, 64, 64, 128)  0           conv3_block1_2_bn[0][0]          
__________________________________________________________________________________________________
conv3_block1_0_conv (Conv2D)    (None, 64, 64, 512)  131584      conv2_block3_out[0][0]           
__________________________________________________________________________________________________
conv3_block1_3_conv (Conv2D)    (None, 64, 64, 512)  66048       conv3_block1_2_relu[0][0]        
__________________________________________________________________________________________________
conv3_block1_0_bn (BatchNormali (None, 64, 64, 512)  2048        conv3_block1_0_conv[0][0]        
__________________________________________________________________________________________________
conv3_block1_3_bn (BatchNormali (None, 64, 64, 512)  2048        conv3_block1_3_conv[0][0]        
__________________________________________________________________________________________________
conv3_block1_add (Add)          (None, 64, 64, 512)  0           conv3_block1_0_bn[0][0]          
                                                                 conv3_block1_3_bn[0][0]          
__________________________________________________________________________________________________
conv3_block1_out (Activation)   (None, 64, 64, 512)  0           conv3_block1_add[0][0]           
__________________________________________________________________________________________________
conv3_block2_1_conv (Conv2D)    (None, 64, 64, 128)  65664       conv3_block1_out[0][0]           
__________________________________________________________________________________________________
conv3_block2_1_bn (BatchNormali (None, 64, 64, 128)  512         conv3_block2_1_conv[0][0]        
__________________________________________________________________________________________________
conv3_block2_1_relu (Activation (None, 64, 64, 128)  0           conv3_block2_1_bn[0][0]          
__________________________________________________________________________________________________
conv3_block2_2_conv (Conv2D)    (None, 64, 64, 128)  147584      conv3_block2_1_relu[0][0]        
__________________________________________________________________________________________________
conv3_block2_2_bn (BatchNormali (None, 64, 64, 128)  512         conv3_block2_2_conv[0][0]        
__________________________________________________________________________________________________
conv3_block2_2_relu (Activation (None, 64, 64, 128)  0           conv3_block2_2_bn[0][0]          
__________________________________________________________________________________________________
conv3_block2_3_conv (Conv2D)    (None, 64, 64, 512)  66048       conv3_block2_2_relu[0][0]        
__________________________________________________________________________________________________
conv3_block2_3_bn (BatchNormali (None, 64, 64, 512)  2048        conv3_block2_3_conv[0][0]        
__________________________________________________________________________________________________
conv3_block2_add (Add)          (None, 64, 64, 512)  0           conv3_block1_out[0][0]           
                                                                 conv3_block2_3_bn[0][0]          
__________________________________________________________________________________________________
conv3_block2_out (Activation)   (None, 64, 64, 512)  0           conv3_block2_add[0][0]           
__________________________________________________________________________________________________
conv3_block3_1_conv (Conv2D)    (None, 64, 64, 128)  65664       conv3_block2_out[0][0]           
__________________________________________________________________________________________________
conv3_block3_1_bn (BatchNormali (None, 64, 64, 128)  512         conv3_block3_1_conv[0][0]        
__________________________________________________________________________________________________
conv3_block3_1_relu (Activation (None, 64, 64, 128)  0           conv3_block3_1_bn[0][0]          
__________________________________________________________________________________________________
conv3_block3_2_conv (Conv2D)    (None, 64, 64, 128)  147584      conv3_block3_1_relu[0][0]        
__________________________________________________________________________________________________
conv3_block3_2_bn (BatchNormali (None, 64, 64, 128)  512         conv3_block3_2_conv[0][0]        
__________________________________________________________________________________________________
conv3_block3_2_relu (Activation (None, 64, 64, 128)  0           conv3_block3_2_bn[0][0]          
__________________________________________________________________________________________________
conv3_block3_3_conv (Conv2D)    (None, 64, 64, 512)  66048       conv3_block3_2_relu[0][0]        
__________________________________________________________________________________________________
conv3_block3_3_bn (BatchNormali (None, 64, 64, 512)  2048        conv3_block3_3_conv[0][0]        
__________________________________________________________________________________________________
conv3_block3_add (Add)          (None, 64, 64, 512)  0           conv3_block2_out[0][0]           
                                                                 conv3_block3_3_bn[0][0]          
__________________________________________________________________________________________________
conv3_block3_out (Activation)   (None, 64, 64, 512)  0           conv3_block3_add[0][0]           
__________________________________________________________________________________________________
conv3_block4_1_conv (Conv2D)    (None, 64, 64, 128)  65664       conv3_block3_out[0][0]           
__________________________________________________________________________________________________
conv3_block4_1_bn (BatchNormali (None, 64, 64, 128)  512         conv3_block4_1_conv[0][0]        
__________________________________________________________________________________________________
conv3_block4_1_relu (Activation (None, 64, 64, 128)  0           conv3_block4_1_bn[0][0]          
__________________________________________________________________________________________________
conv3_block4_2_conv (Conv2D)    (None, 64, 64, 128)  147584      conv3_block4_1_relu[0][0]        
__________________________________________________________________________________________________
conv3_block4_2_bn (BatchNormali (None, 64, 64, 128)  512         conv3_block4_2_conv[0][0]        
__________________________________________________________________________________________________
conv3_block4_2_relu (Activation (None, 64, 64, 128)  0           conv3_block4_2_bn[0][0]          
__________________________________________________________________________________________________
conv3_block4_3_conv (Conv2D)    (None, 64, 64, 512)  66048       conv3_block4_2_relu[0][0]        
__________________________________________________________________________________________________
conv3_block4_3_bn (BatchNormali (None, 64, 64, 512)  2048        conv3_block4_3_conv[0][0]        
__________________________________________________________________________________________________
conv3_block4_add (Add)          (None, 64, 64, 512)  0           conv3_block3_out[0][0]           
                                                                 conv3_block4_3_bn[0][0]          
__________________________________________________________________________________________________
conv3_block4_out (Activation)   (None, 64, 64, 512)  0           conv3_block4_add[0][0]           
__________________________________________________________________________________________________
conv4_block1_1_conv (Conv2D)    (None, 32, 32, 256)  131328      conv3_block4_out[0][0]           
__________________________________________________________________________________________________
conv4_block1_1_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block1_1_conv[0][0]        
__________________________________________________________________________________________________
conv4_block1_1_relu (Activation (None, 32, 32, 256)  0           conv4_block1_1_bn[0][0]          
__________________________________________________________________________________________________
conv4_block1_2_conv (Conv2D)    (None, 32, 32, 256)  590080      conv4_block1_1_relu[0][0]        
__________________________________________________________________________________________________
conv4_block1_2_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block1_2_conv[0][0]        
__________________________________________________________________________________________________
conv4_block1_2_relu (Activation (None, 32, 32, 256)  0           conv4_block1_2_bn[0][0]          
__________________________________________________________________________________________________
conv4_block1_0_conv (Conv2D)    (None, 32, 32, 1024) 525312      conv3_block4_out[0][0]           
__________________________________________________________________________________________________
conv4_block1_3_conv (Conv2D)    (None, 32, 32, 1024) 263168      conv4_block1_2_relu[0][0]        
__________________________________________________________________________________________________
conv4_block1_0_bn (BatchNormali (None, 32, 32, 1024) 4096        conv4_block1_0_conv[0][0]        
__________________________________________________________________________________________________
conv4_block1_3_bn (BatchNormali (None, 32, 32, 1024) 4096        conv4_block1_3_conv[0][0]        
__________________________________________________________________________________________________
conv4_block1_add (Add)          (None, 32, 32, 1024) 0           conv4_block1_0_bn[0][0]          
                                                                 conv4_block1_3_bn[0][0]          
__________________________________________________________________________________________________
conv4_block1_out (Activation)   (None, 32, 32, 1024) 0           conv4_block1_add[0][0]           
__________________________________________________________________________________________________
conv4_block2_1_conv (Conv2D)    (None, 32, 32, 256)  262400      conv4_block1_out[0][0]           
__________________________________________________________________________________________________
conv4_block2_1_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block2_1_conv[0][0]        
__________________________________________________________________________________________________
conv4_block2_1_relu (Activation (None, 32, 32, 256)  0           conv4_block2_1_bn[0][0]          
__________________________________________________________________________________________________
conv4_block2_2_conv (Conv2D)    (None, 32, 32, 256)  590080      conv4_block2_1_relu[0][0]        
__________________________________________________________________________________________________
conv4_block2_2_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block2_2_conv[0][0]        
__________________________________________________________________________________________________
conv4_block2_2_relu (Activation (None, 32, 32, 256)  0           conv4_block2_2_bn[0][0]          
__________________________________________________________________________________________________
conv4_block2_3_conv (Conv2D)    (None, 32, 32, 1024) 263168      conv4_block2_2_relu[0][0]        
__________________________________________________________________________________________________
conv4_block2_3_bn (BatchNormali (None, 32, 32, 1024) 4096        conv4_block2_3_conv[0][0]        
__________________________________________________________________________________________________
conv4_block2_add (Add)          (None, 32, 32, 1024) 0           conv4_block1_out[0][0]           
                                                                 conv4_block2_3_bn[0][0]          
__________________________________________________________________________________________________
conv4_block2_out (Activation)   (None, 32, 32, 1024) 0           conv4_block2_add[0][0]           
__________________________________________________________________________________________________
conv4_block3_1_conv (Conv2D)    (None, 32, 32, 256)  262400      conv4_block2_out[0][0]           
__________________________________________________________________________________________________
conv4_block3_1_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block3_1_conv[0][0]        
__________________________________________________________________________________________________
conv4_block3_1_relu (Activation (None, 32, 32, 256)  0           conv4_block3_1_bn[0][0]          
__________________________________________________________________________________________________
conv4_block3_2_conv (Conv2D)    (None, 32, 32, 256)  590080      conv4_block3_1_relu[0][0]        
__________________________________________________________________________________________________
conv4_block3_2_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block3_2_conv[0][0]        
__________________________________________________________________________________________________
conv4_block3_2_relu (Activation (None, 32, 32, 256)  0           conv4_block3_2_bn[0][0]          
__________________________________________________________________________________________________
conv4_block3_3_conv (Conv2D)    (None, 32, 32, 1024) 263168      conv4_block3_2_relu[0][0]        
__________________________________________________________________________________________________
conv4_block3_3_bn (BatchNormali (None, 32, 32, 1024) 4096        conv4_block3_3_conv[0][0]        
__________________________________________________________________________________________________
conv4_block3_add (Add)          (None, 32, 32, 1024) 0           conv4_block2_out[0][0]           
                                                                 conv4_block3_3_bn[0][0]          
__________________________________________________________________________________________________
conv4_block3_out (Activation)   (None, 32, 32, 1024) 0           conv4_block3_add[0][0]           
__________________________________________________________________________________________________
conv4_block4_1_conv (Conv2D)    (None, 32, 32, 256)  262400      conv4_block3_out[0][0]           
__________________________________________________________________________________________________
conv4_block4_1_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block4_1_conv[0][0]        
__________________________________________________________________________________________________
conv4_block4_1_relu (Activation (None, 32, 32, 256)  0           conv4_block4_1_bn[0][0]          
__________________________________________________________________________________________________
conv4_block4_2_conv (Conv2D)    (None, 32, 32, 256)  590080      conv4_block4_1_relu[0][0]        
__________________________________________________________________________________________________
conv4_block4_2_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block4_2_conv[0][0]        
__________________________________________________________________________________________________
conv4_block4_2_relu (Activation (None, 32, 32, 256)  0           conv4_block4_2_bn[0][0]          
__________________________________________________________________________________________________
conv4_block4_3_conv (Conv2D)    (None, 32, 32, 1024) 263168      conv4_block4_2_relu[0][0]        
__________________________________________________________________________________________________
conv4_block4_3_bn (BatchNormali (None, 32, 32, 1024) 4096        conv4_block4_3_conv[0][0]        
__________________________________________________________________________________________________
conv4_block4_add (Add)          (None, 32, 32, 1024) 0           conv4_block3_out[0][0]           
                                                                 conv4_block4_3_bn[0][0]          
__________________________________________________________________________________________________
conv4_block4_out (Activation)   (None, 32, 32, 1024) 0           conv4_block4_add[0][0]           
__________________________________________________________________________________________________
conv4_block5_1_conv (Conv2D)    (None, 32, 32, 256)  262400      conv4_block4_out[0][0]           
__________________________________________________________________________________________________
conv4_block5_1_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block5_1_conv[0][0]        
__________________________________________________________________________________________________
conv4_block5_1_relu (Activation (None, 32, 32, 256)  0           conv4_block5_1_bn[0][0]          
__________________________________________________________________________________________________
conv4_block5_2_conv (Conv2D)    (None, 32, 32, 256)  590080      conv4_block5_1_relu[0][0]        
__________________________________________________________________________________________________
conv4_block5_2_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block5_2_conv[0][0]        
__________________________________________________________________________________________________
conv4_block5_2_relu (Activation (None, 32, 32, 256)  0           conv4_block5_2_bn[0][0]          
__________________________________________________________________________________________________
conv4_block5_3_conv (Conv2D)    (None, 32, 32, 1024) 263168      conv4_block5_2_relu[0][0]        
__________________________________________________________________________________________________
conv4_block5_3_bn (BatchNormali (None, 32, 32, 1024) 4096        conv4_block5_3_conv[0][0]        
__________________________________________________________________________________________________
conv4_block5_add (Add)          (None, 32, 32, 1024) 0           conv4_block4_out[0][0]           
                                                                 conv4_block5_3_bn[0][0]          
__________________________________________________________________________________________________
conv4_block5_out (Activation)   (None, 32, 32, 1024) 0           conv4_block5_add[0][0]           
__________________________________________________________________________________________________
conv4_block6_1_conv (Conv2D)    (None, 32, 32, 256)  262400      conv4_block5_out[0][0]           
__________________________________________________________________________________________________
conv4_block6_1_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block6_1_conv[0][0]        
__________________________________________________________________________________________________
conv4_block6_1_relu (Activation (None, 32, 32, 256)  0           conv4_block6_1_bn[0][0]          
__________________________________________________________________________________________________
conv4_block6_2_conv (Conv2D)    (None, 32, 32, 256)  590080      conv4_block6_1_relu[0][0]        
__________________________________________________________________________________________________
conv4_block6_2_bn (BatchNormali (None, 32, 32, 256)  1024        conv4_block6_2_conv[0][0]        
__________________________________________________________________________________________________
conv4_block6_2_relu (Activation (None, 32, 32, 256)  0           conv4_block6_2_bn[0][0]          
__________________________________________________________________________________________________
conv4_block6_3_conv (Conv2D)    (None, 32, 32, 1024) 263168      conv4_block6_2_relu[0][0]        
__________________________________________________________________________________________________
conv4_block6_3_bn (BatchNormali (None, 32, 32, 1024) 4096        conv4_block6_3_conv[0][0]        
__________________________________________________________________________________________________
conv4_block6_add (Add)          (None, 32, 32, 1024) 0           conv4_block5_out[0][0]           
                                                                 conv4_block6_3_bn[0][0]          
__________________________________________________________________________________________________
conv4_block6_out (Activation)   (None, 32, 32, 1024) 0           conv4_block6_add[0][0]           
__________________________________________________________________________________________________
conv5_block1_1_conv (Conv2D)    (None, 16, 16, 512)  524800      conv4_block6_out[0][0]           
__________________________________________________________________________________________________
conv5_block1_1_bn (BatchNormali (None, 16, 16, 512)  2048        conv5_block1_1_conv[0][0]        
__________________________________________________________________________________________________
conv5_block1_1_relu (Activation (None, 16, 16, 512)  0           conv5_block1_1_bn[0][0]          
__________________________________________________________________________________________________
conv5_block1_2_conv (Conv2D)    (None, 16, 16, 512)  2359808     conv5_block1_1_relu[0][0]        
__________________________________________________________________________________________________
conv5_block1_2_bn (BatchNormali (None, 16, 16, 512)  2048        conv5_block1_2_conv[0][0]        
__________________________________________________________________________________________________
conv5_block1_2_relu (Activation (None, 16, 16, 512)  0           conv5_block1_2_bn[0][0]          
__________________________________________________________________________________________________
conv5_block1_0_conv (Conv2D)    (None, 16, 16, 2048) 2099200     conv4_block6_out[0][0]           
__________________________________________________________________________________________________
conv5_block1_3_conv (Conv2D)    (None, 16, 16, 2048) 1050624     conv5_block1_2_relu[0][0]        
__________________________________________________________________________________________________
conv5_block1_0_bn (BatchNormali (None, 16, 16, 2048) 8192        conv5_block1_0_conv[0][0]        
__________________________________________________________________________________________________
conv5_block1_3_bn (BatchNormali (None, 16, 16, 2048) 8192        conv5_block1_3_conv[0][0]        
__________________________________________________________________________________________________
conv5_block1_add (Add)          (None, 16, 16, 2048) 0           conv5_block1_0_bn[0][0]          
                                                                 conv5_block1_3_bn[0][0]          
__________________________________________________________________________________________________
conv5_block1_out (Activation)   (None, 16, 16, 2048) 0           conv5_block1_add[0][0]           
__________________________________________________________________________________________________
conv5_block2_1_conv (Conv2D)    (None, 16, 16, 512)  1049088     conv5_block1_out[0][0]           
__________________________________________________________________________________________________
conv5_block2_1_bn (BatchNormali (None, 16, 16, 512)  2048        conv5_block2_1_conv[0][0]        
__________________________________________________________________________________________________
conv5_block2_1_relu (Activation (None, 16, 16, 512)  0           conv5_block2_1_bn[0][0]          
__________________________________________________________________________________________________
conv5_block2_2_conv (Conv2D)    (None, 16, 16, 512)  2359808     conv5_block2_1_relu[0][0]        
__________________________________________________________________________________________________
conv5_block2_2_bn (BatchNormali (None, 16, 16, 512)  2048        conv5_block2_2_conv[0][0]        
__________________________________________________________________________________________________
conv5_block2_2_relu (Activation (None, 16, 16, 512)  0           conv5_block2_2_bn[0][0]          
__________________________________________________________________________________________________
conv5_block2_3_conv (Conv2D)    (None, 16, 16, 2048) 1050624     conv5_block2_2_relu[0][0]        
__________________________________________________________________________________________________
conv5_block2_3_bn (BatchNormali (None, 16, 16, 2048) 8192        conv5_block2_3_conv[0][0]        
__________________________________________________________________________________________________
conv5_block2_add (Add)          (None, 16, 16, 2048) 0           conv5_block1_out[0][0]           
                                                                 conv5_block2_3_bn[0][0]          
__________________________________________________________________________________________________
conv5_block2_out (Activation)   (None, 16, 16, 2048) 0           conv5_block2_add[0][0]           
__________________________________________________________________________________________________
conv5_block3_1_conv (Conv2D)    (None, 16, 16, 512)  1049088     conv5_block2_out[0][0]           
__________________________________________________________________________________________________
conv5_block3_1_bn (BatchNormali (None, 16, 16, 512)  2048        conv5_block3_1_conv[0][0]        
__________________________________________________________________________________________________
conv5_block3_1_relu (Activation (None, 16, 16, 512)  0           conv5_block3_1_bn[0][0]          
__________________________________________________________________________________________________
conv5_block3_2_conv (Conv2D)    (None, 16, 16, 512)  2359808     conv5_block3_1_relu[0][0]        
__________________________________________________________________________________________________
conv5_block3_2_bn (BatchNormali (None, 16, 16, 512)  2048        conv5_block3_2_conv[0][0]        
__________________________________________________________________________________________________
conv5_block3_2_relu (Activation (None, 16, 16, 512)  0           conv5_block3_2_bn[0][0]          
__________________________________________________________________________________________________
conv5_block3_3_conv (Conv2D)    (None, 16, 16, 2048) 1050624     conv5_block3_2_relu[0][0]        
__________________________________________________________________________________________________
conv5_block3_3_bn (BatchNormali (None, 16, 16, 2048) 8192        conv5_block3_3_conv[0][0]        
__________________________________________________________________________________________________
conv5_block3_add (Add)          (None, 16, 16, 2048) 0           conv5_block2_out[0][0]           
                                                                 conv5_block3_3_bn[0][0]          
__________________________________________________________________________________________________
conv5_block3_out (Activation)   (None, 16, 16, 2048) 0           conv5_block3_add[0][0]           
__________________________________________________________________________________________________
global_average_pooling2d_2 (Glo (None, 2048)         0           conv5_block3_out[0][0]           
__________________________________________________________________________________________________
dense_8 (Dense)                 (None, 516)          1057284     global_average_pooling2d_2[0][0] 
__________________________________________________________________________________________________
dropout_4 (Dropout)             (None, 516)          0           dense_8[0][0]                    
__________________________________________________________________________________________________
dense_9 (Dense)                 (None, 256)          132352      dropout_4[0][0]                  
__________________________________________________________________________________________________
dropout_5 (Dropout)             (None, 256)          0           dense_9[0][0]                    
__________________________________________________________________________________________________
dense_10 (Dense)                (None, 64)           16448       dropout_5[0][0]                  
__________________________________________________________________________________________________
dense_11 (Dense)                (None, 2)            130         dense_10[0][0]                   
==================================================================================================
Total params: 24,793,926
Trainable params: 10,137,542
Non-trainable params: 14,656,384
__________________________________________________________________________________________________
None
In [52]:
# Define modifier to replace the sigmoid function of the last layer to a linear function
def model_modifier(m):
    m.layers[-1].activation = tf.keras.activations.linear

# Define losses functions. 0 is the index for a normal MRI
loss_normal = lambda output: K.mean(output[:, 0])

# Define losses functions. 2 is the index for a PVNH MRI
loss_PVNH = lambda output: K.mean(output[:, 1])
    
# Create Gradcam object
gradcam = Gradcam(model, model_modifier)

# Create Saliency object
saliency = Saliency(model, model_modifier)

# Iterate through the MRIs in test set

# Set background to white color
plt.rcParams['axes.facecolor']='white'
plt.rcParams['figure.facecolor']='white'
plt.rcParams['figure.edgecolor']='white'




print('\n \n' + '\033[1m' + 'EACH ORIGINAL MRI IS ANALYZED WITH TWO METHODS: CLASS ACTIVATION MAP (UPPER ROW) AND SALIENCY MAP (LOWER ROW)' + '\033[0m' + '\n')
print('\033[1m' + 'EACH MAP IS SUPERIMPOSED ON THE ORIGINAL MRI WITH A TRANSPARENCY THAT IS INVERSELY PROPORTIONAL TO THE ESTIMATED PROBABILITY OF THE MRI BELONGING TO THAT CATEGORY (NORMAL MRI OR PERIVENTRICULAR NODULAR HETEROTOPIA) \n \nHIGHER ESTIMATED PROBABILITIES PRODUCE CLEARLY SEEN MAPS OVERLAID ON THE ORIGINAL MRI AND LOWER ESTIMATED PROBABILITIES PRODUCE VERY TRANSPARENT OR NOT APPRECIABLE MAPS OVERLAID ON THE ORIGINAL MRI' + '\033[0m'+ '\n')


for i in range(20):
    
    # Print spaces to separate from the next image
    print('\n \n \n \n \n \n')
  
    # Print real classification of the image
    if y_true[i]==0:
        real_classification='Normal MRI'
    else:
        real_classification='PVNH'
        
    print('\033[1m' + 'REAL CLASSIFICATION OF THE IMAGE: {}'.format(real_classification) + '\033[0m')
   
    # Print model classification and model probability of MCD
    if y_predResNet50[i]==0:
        predicted_classification='Normal MRI'
    else:
        predicted_classification='PVNH'   
    
    print('\033[1m' + 'MODEL CLASSIFICATION OF THE IMAGE: {}'.format(predicted_classification)  + '\033[0m \n') 
    print('\033[1m' + '   Prob. Normal MRI: {:.4f}    '.format(valResNet50[i][0]) + 'Prob. PVNH: {:.4f}'.format(valResNet50[i][1]) + '\033[0m')
  
    
    # Arrays to plot
    original_image=shuffled_val_X[i]
    list_heatmaps=[
        # GradCam heatmap for normal MRI
        normalize(gradcam(loss_normal, shuffled_val_X[i])),
        # GradCam heatmap for PVNH
        normalize(gradcam(loss_PVNH, shuffled_val_X[i])),
        
        # Saliency heatmap for normal MRI
        normalize(saliency(loss_normal, seed_input=np.expand_dims(shuffled_val_X[i], axis=0), smooth_noise=0.2)),
        # Saliency heatmap for PVNH
        normalize(saliency(loss_PVNH, seed_input=np.expand_dims(shuffled_val_X[i], axis=0), smooth_noise=0.2))
    ]
    
    # Define figure
    f=plt.figure(figsize=(20, 8))

    # Define the image grid
    grid = ImageGrid(f, 111,
                nrows_ncols=(2, 2),
                axes_pad=0.05,
                share_all=True,
                cbar_location="right",
                cbar_mode=None,
                cbar_size="2%",
                cbar_pad=0.15)

    
    # Iterate over the graphs
    for j, axis in enumerate(grid):
        # Plot original 
        im=axis.imshow(original_image)
        im=axis.imshow(list_heatmaps[j][0], cmap='jet', alpha=0.5*valResNet50[i][j%2])
        im=axis.set_xticks([])
        im=axis.set_yticks([])
    
    # Create scalarmappable for obtaining the colorbar from 0 to 1
    sm = plt.cm.ScalarMappable(cmap='jet', norm=plt.Normalize(vmin=0, vmax=1))
    plt.colorbar(sm)
    plt.show()
 
EACH ORIGINAL MRI IS ANALYZED WITH TWO METHODS: CLASS ACTIVATION MAP (UPPER ROW) AND SALIENCY MAP (LOWER ROW)

EACH MAP IS SUPERIMPOSED ON THE ORIGINAL MRI WITH A TRANSPARENCY THAT IS INVERSELY PROPORTIONAL TO THE ESTIMATED PROBABILITY OF THE MRI BELONGING TO THAT CATEGORY (NORMAL MRI OR PERIVENTRICULAR NODULAR HETEROTOPIA) 
 
HIGHER ESTIMATED PROBABILITIES PRODUCE CLEARLY SEEN MAPS OVERLAID ON THE ORIGINAL MRI AND LOWER ESTIMATED PROBABILITIES PRODUCE VERY TRANSPARENT OR NOT APPRECIABLE MAPS OVERLAID ON THE ORIGINAL MRI


 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9667    Prob. PVNH: 0.0333
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0313    Prob. PVNH: 0.9687
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0005    Prob. PVNH: 0.9995
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9548    Prob. PVNH: 0.0452
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.6106    Prob. PVNH: 0.3894
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9996    Prob. PVNH: 0.0004
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.1184    Prob. PVNH: 0.8816
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9843    Prob. PVNH: 0.0157
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.6519    Prob. PVNH: 0.3481
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0006    Prob. PVNH: 0.9994
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9993    Prob. PVNH: 0.0007
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9933    Prob. PVNH: 0.0067
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.6408    Prob. PVNH: 0.3592
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9664    Prob. PVNH: 0.0336
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.1063    Prob. PVNH: 0.8937
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9995    Prob. PVNH: 0.0005
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9877    Prob. PVNH: 0.0123

InceptionResNetV2

Define the convolutional neural network

In [53]:
# Use InceptionResNetV2 as the base model
base_model = tf.keras.applications.inception_resnet_v2.InceptionResNetV2(layers=tf.keras.layers, weights='imagenet', include_top = False, input_shape=train_X.shape[1:])


# Get the output of the base model
x = base_model.output

# Add a 2D global average pooling layer
x = GlobalAveragePooling2D()(x)

## Add the fully-connected layers
x = Dense(units=516, activation='relu')(x)
x = Dropout(rate=0.5)(x)
x = Dense(units=256, activation='relu')(x)
x = Dropout(rate=0.5)(x)
x = Dense(units=64, activation='relu')(x)

# Ad a layer for multiclass classification
predictions = Dense(units = 2, activation = 'softmax')(x)

# Define the model to be trained
model = Model(inputs = base_model.input, outputs = predictions)

# Train the last 75 layers in the base model
for layer in base_model.layers[:-75]:
    layer.trainable = False
for layer in base_model.layers[-75:]:
    layer.trainable = True
    
# Compile the model
opt = Adam(lr = 0.0001)
model.compile(optimizer = opt, loss = 'categorical_crossentropy', metrics = ['accuracy'])

# Fit and test the model in the validation set
historyResNet50 = model.fit(shuffled_train_X, shuffled_train_y, validation_data = [shuffled_val_X, shuffled_val_y], epochs = 50, batch_size = 32)




print('\n')
print('\n')
# AUC in train and validation set
auc_trainResNet50 = roc_auc_score(shuffled_train_y, model.predict(shuffled_train_X))
print('The AUC in the train set is {:.4f}.'.format(auc_trainResNet50))
print('\n')
print('\n')
auc_validResNet50 = roc_auc_score(shuffled_val_y, model.predict(shuffled_val_X))
print('The AUC in the validation set is {:.4f}.'.format(auc_validResNet50))

print('\n')
print('\n')
print('\n')
print('\n')

# Figure size and colors
mpl.rcParams['figure.figsize'] = (20,24)
plt.rcParams['axes.facecolor']='white'
plt.rcParams['figure.facecolor']='lightgreen'
plt.rcParams['figure.edgecolor']='black'

# Plot history of loss during training
plt.plot(historyResNet50.history['loss'], label='Train', color='red')
plt.plot(historyResNet50.history['val_loss'], label='Validation', color='blue')
plt.title('Loss in train and validation set', size=30)
plt.xlabel('Epoch', size=24)
plt.ylabel('Categorical cross-entropy loss', size=24)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(fontsize=20)
plt.ylim(ymin=0, ymax=5)
plt.grid(b=None)
plt.show()

print('\n')
print('\n')
print('\n')
print('\n')

# Plot history of accuracy
plt.plot(historyResNet50.history['accuracy'], label='Train', color='red')
plt.plot(historyResNet50.history['val_accuracy'], label='Validation', color='blue')
plt.title('Accuracy in train and validation set', size=30)
plt.xlabel('Epoch', size=24)
plt.ylabel('Accuracy', size=24)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(fontsize=20)
plt.ylim(ymin=0, ymax=1.1)
plt.grid(b=None)
plt.show()
Train on 5305 samples, validate on 334 samples
Epoch 1/50
5305/5305 [==============================] - 74s 14ms/sample - loss: 0.2693 - accuracy: 0.8765 - val_loss: 0.9114 - val_accuracy: 0.8024
Epoch 2/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0566 - accuracy: 0.9832 - val_loss: 0.8918 - val_accuracy: 0.7904
Epoch 3/50
5305/5305 [==============================] - 65s 12ms/sample - loss: 0.0257 - accuracy: 0.9926 - val_loss: 1.3692 - val_accuracy: 0.7695
Epoch 4/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0226 - accuracy: 0.9934 - val_loss: 2.1228 - val_accuracy: 0.6707
Epoch 5/50
5305/5305 [==============================] - 64s 12ms/sample - loss: 0.0134 - accuracy: 0.9955 - val_loss: 1.7182 - val_accuracy: 0.7186
Epoch 6/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0120 - accuracy: 0.9959 - val_loss: 2.2870 - val_accuracy: 0.6946
Epoch 7/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 0.0144 - accuracy: 0.9949 - val_loss: 1.8419 - val_accuracy: 0.7216
Epoch 8/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 0.0059 - accuracy: 0.9987 - val_loss: 2.5392 - val_accuracy: 0.7066
Epoch 9/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 0.0048 - accuracy: 0.9985 - val_loss: 1.4082 - val_accuracy: 0.7874
Epoch 10/50
5305/5305 [==============================] - 63s 12ms/sample - loss: 0.0204 - accuracy: 0.9942 - val_loss: 0.8203 - val_accuracy: 0.8114
Epoch 11/50
5305/5305 [==============================] - 63s 12ms/sample - loss: 0.0028 - accuracy: 0.9994 - val_loss: 1.2938 - val_accuracy: 0.7784
Epoch 12/50
5305/5305 [==============================] - 61s 11ms/sample - loss: 0.0072 - accuracy: 0.9981 - val_loss: 2.1793 - val_accuracy: 0.7425
Epoch 13/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 0.0072 - accuracy: 0.9979 - val_loss: 1.6166 - val_accuracy: 0.7365
Epoch 14/50
5305/5305 [==============================] - 61s 12ms/sample - loss: 0.0074 - accuracy: 0.9974 - val_loss: 2.2055 - val_accuracy: 0.7395
Epoch 15/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0083 - accuracy: 0.9977 - val_loss: 1.3489 - val_accuracy: 0.7695
Epoch 16/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0034 - accuracy: 0.9991 - val_loss: 2.0050 - val_accuracy: 0.7335
Epoch 17/50
5305/5305 [==============================] - 61s 12ms/sample - loss: 0.0204 - accuracy: 0.9951 - val_loss: 1.3590 - val_accuracy: 0.7066
Epoch 18/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 0.0064 - accuracy: 0.9979 - val_loss: 1.6094 - val_accuracy: 0.7275
Epoch 19/50
5305/5305 [==============================] - 61s 11ms/sample - loss: 0.0051 - accuracy: 0.9983 - val_loss: 1.7903 - val_accuracy: 0.7575
Epoch 20/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 9.9573e-04 - accuracy: 0.9998 - val_loss: 2.1891 - val_accuracy: 0.7635
Epoch 21/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 8.2439e-04 - accuracy: 0.9998 - val_loss: 2.3508 - val_accuracy: 0.7545
Epoch 22/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0063 - accuracy: 0.9979 - val_loss: 3.1512 - val_accuracy: 0.7156
Epoch 23/50
5305/5305 [==============================] - 61s 12ms/sample - loss: 0.0119 - accuracy: 0.9968 - val_loss: 2.1177 - val_accuracy: 0.7036
Epoch 24/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 0.0077 - accuracy: 0.9972 - val_loss: 2.1763 - val_accuracy: 0.7216
Epoch 25/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0073 - accuracy: 0.9975 - val_loss: 1.7352 - val_accuracy: 0.7725
Epoch 26/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 7.9019e-04 - accuracy: 1.0000 - val_loss: 1.6615 - val_accuracy: 0.7635
Epoch 27/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0023 - accuracy: 0.9994 - val_loss: 1.8338 - val_accuracy: 0.7754
Epoch 28/50
5305/5305 [==============================] - 61s 12ms/sample - loss: 0.0151 - accuracy: 0.9957 - val_loss: 2.4032 - val_accuracy: 0.7006
Epoch 29/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 0.0032 - accuracy: 0.9987 - val_loss: 1.8624 - val_accuracy: 0.7515
Epoch 30/50
5305/5305 [==============================] - 61s 11ms/sample - loss: 0.0056 - accuracy: 0.9983 - val_loss: 2.2326 - val_accuracy: 0.7216
Epoch 31/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 6.2282e-04 - accuracy: 0.9996 - val_loss: 2.1741 - val_accuracy: 0.7365
Epoch 32/50
5305/5305 [==============================] - 61s 11ms/sample - loss: 3.1366e-04 - accuracy: 1.0000 - val_loss: 2.1393 - val_accuracy: 0.7305
Epoch 33/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 3.2633e-04 - accuracy: 1.0000 - val_loss: 2.3202 - val_accuracy: 0.7335
Epoch 34/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 3.6474e-05 - accuracy: 1.0000 - val_loss: 2.5366 - val_accuracy: 0.7275
Epoch 35/50
5305/5305 [==============================] - 61s 11ms/sample - loss: 0.0031 - accuracy: 0.9989 - val_loss: 2.1699 - val_accuracy: 0.7575
Epoch 36/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0066 - accuracy: 0.9987 - val_loss: 2.9672 - val_accuracy: 0.6916
Epoch 37/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0160 - accuracy: 0.9949 - val_loss: 1.9842 - val_accuracy: 0.6377
Epoch 38/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0047 - accuracy: 0.9979 - val_loss: 2.3470 - val_accuracy: 0.7216
Epoch 39/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 0.0088 - accuracy: 0.9981 - val_loss: 1.3330 - val_accuracy: 0.7605
Epoch 40/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 0.0041 - accuracy: 0.9989 - val_loss: 1.3892 - val_accuracy: 0.7635
Epoch 41/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 2.2096e-04 - accuracy: 1.0000 - val_loss: 1.3768 - val_accuracy: 0.7545
Epoch 42/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 6.7681e-05 - accuracy: 1.0000 - val_loss: 1.4886 - val_accuracy: 0.7515
Epoch 43/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 8.4461e-04 - accuracy: 0.9996 - val_loss: 1.7966 - val_accuracy: 0.7395
Epoch 44/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 0.0030 - accuracy: 0.9992 - val_loss: 2.4888 - val_accuracy: 0.6826
Epoch 45/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 7.8851e-04 - accuracy: 0.9996 - val_loss: 1.9286 - val_accuracy: 0.7455
Epoch 46/50
5305/5305 [==============================] - 62s 12ms/sample - loss: 0.0038 - accuracy: 0.9987 - val_loss: 1.8565 - val_accuracy: 0.7305
Epoch 47/50
5305/5305 [==============================] - 61s 12ms/sample - loss: 0.0109 - accuracy: 0.9960 - val_loss: 1.4179 - val_accuracy: 0.7904
Epoch 48/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 3.4159e-04 - accuracy: 1.0000 - val_loss: 1.4870 - val_accuracy: 0.7904
Epoch 49/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 4.7578e-05 - accuracy: 1.0000 - val_loss: 1.6202 - val_accuracy: 0.7784
Epoch 50/50
5305/5305 [==============================] - 60s 11ms/sample - loss: 1.8687e-04 - accuracy: 1.0000 - val_loss: 1.9911 - val_accuracy: 0.7545




The AUC in the train set is 1.0000.




The AUC in the validation set is 0.8405.















In [54]:
# Generate predictions in the form of probabilities for the validation set
valInceptionResNetV2 = model.predict(shuffled_val_X, batch_size = 32)

# Generate the confusion matrix in the validation set
y_true = np.argmax(shuffled_val_y, axis=1)
y_predInceptionResNetV2 = np.argmax(valInceptionResNetV2, axis=1)

# Confusion matrix
pd.DataFrame(confusion_matrix(y_true, y_predInceptionResNetV2), index=['True: Normal', 'True: PVNH'], columns=['Prediction: Normal', 'Prediction: PVNH']).T
Out[54]:
True: Normal True: PVNH
Prediction: Normal 117 40
Prediction: PVNH 42 135
In [55]:
# Calculate accuracy in the validation set
accuracy_InceptionResNetV2 = accuracy_score(y_true=y_true, y_pred=y_predInceptionResNetV2)
print('The accuracy in the validation set is {:.4f}.'.format(accuracy_InceptionResNetV2))
The accuracy in the validation set is 0.7545.
In [56]:
# Calculate AUC in the validation set
auc_validInceptionResNetV2 = roc_auc_score(shuffled_val_y, model.predict(shuffled_val_X))
print('The AUC in the validation set is {:.4f}.'.format(auc_validInceptionResNetV2))
The AUC in the validation set is 0.8405.
In [57]:
# Classification report
print(classification_report(y_true, y_predInceptionResNetV2, target_names=['Normal MRI', 'PVNH']))
              precision    recall  f1-score   support

  Normal MRI       0.75      0.74      0.74       159
        PVNH       0.76      0.77      0.77       175

    accuracy                           0.75       334
   macro avg       0.75      0.75      0.75       334
weighted avg       0.75      0.75      0.75       334

Save model InceptionResNetV2

In [58]:
# Serialize model to JSON
model_json = model.to_json()
with open("InceptionResNetV2.json", "w") as json_file:
    json_file.write(model_json)
# Serialize weights to HDF5
model.save_weights("InceptionResNetV2.h5")

Model visualization

In [59]:
# Visualize the structure and layers of the model
model.layers
Out[59]:
[<tensorflow.python.keras.engine.input_layer.InputLayer at 0x7f20c46c50f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c46c51d0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c46c57f0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c46c5710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c46c54e0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130729908>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130729ba8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21307295c0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21043a55f8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210439a080>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f21043a52e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21043a5ba8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21043a7fd0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21683ab710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21683ab160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f216839aef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21683b69e8>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f21683b6128>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21300fe198>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130110ef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213010e9e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c4735860>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f213010e128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c4a4e10>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c220780>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c4a4dd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c220cf8>,
 <tensorflow.python.keras.layers.pooling.AveragePooling2D at 0x7f2168196748>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21683b67f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c4912b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c220438>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2168196e10>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4735ac8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130108d30>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2168196a90>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c45bbf28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c471a0f0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21300fe6d8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21681a7080>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c45d17b8>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20c45d1208>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104166128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104606e80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21045ff978>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c64e518>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21045ff0b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c660da0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4799710>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c660d68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4799c88>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c45d1518>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c664240>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c47993c8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c64ea58>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104144cc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c47a76a0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c65f048>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104166668>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c477b160>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20c47a73c8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c47a7e10>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21045a5cc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21045a5b70>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c406a20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130769208>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130772630>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104584940>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21307720f0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21304cba58>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f213075fef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21304d8198>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130747940>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21045a5e10>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21304cb710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130747080>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21045aed68>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c406d68>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c42a26d8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104584d68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c406d30>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c42a2c50>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20c42a2390>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c42a2a58>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21306dbe48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21306db668>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210478f6d8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210477cd30>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210477ccf8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21306d2080>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210477c9e8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c228710>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130289c50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c228c88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213029f5f8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21306db828>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c2283c8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f213029f0b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21306d3ac8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210478fa20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c636eb8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21306d29b0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21047ad160>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c615908>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c615048>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c615710>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f2104215d68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104215860>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130053390>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f216814f9e8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f216814ffd0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104237c50>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f216814f6a0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104201ef0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21304aacf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213003a940>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21304aacc0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21042154e0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f213003a080>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21304aaf60>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104234c50>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21300536d8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f213047ac18>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104237c18>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130053c50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213047afd0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2130480048>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21304803c8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21302d57b8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21302d5b70>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2168338048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2168115b00>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21681150f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21302bf9b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2168115630>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f213007bc50>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21681289b0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21300b25f8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2168128f98>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21302d52b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21300b20b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2168128668>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21302bfcf8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2168331eb8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104550cc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21302bfcc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2168338908>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104550c88>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2104550f98>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104550fd0>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f222c1d5f98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c1d5c50>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c46b4048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c46a9e80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c46a48d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c1ec668>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c46a4160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c6bfcf8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210475e668>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c6bfcc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210475ebe0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c1e3470>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c6bff60>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210475e320>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c1ec9b0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c6c8c18>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c0bd978>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c1ecfd0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c6c8fd0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c0bdf60>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c0bd630>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c0bdcf8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210c0d9c18>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c0d9ac8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21306a7f98>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2224678fd0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2224678c88>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c3ec320>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2224669048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c3bc9b0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2224666e48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c3bcf98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c1ea898>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c0d9d68>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c3bc668>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c1ea128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c0cdcc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21306a7cc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c1ba630>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c3ecc50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21306a7c88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c1baba8>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c1ba2e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c1ba9b0>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f2104486da0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21044865c0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104131630>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104110c88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104110c50>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21044a2128>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104110ef0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210433e668>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22244bef98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210433ebe0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22244bef60>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104486780>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210433e320>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22244c8400>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104494a20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104131978>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c4e0e10>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21044a2908>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104131f60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c4e9860>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c4e90f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c4e9668>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210c4baa58>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c4bae10>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c2b02e8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4662940>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4662f28>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c2f4358>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c46625f8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c2d7e48>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4644c50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c2c7898>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4644c18>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c4ba550>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c2c7128>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c4644e80>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c2e7f98>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c2b0630>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104321f60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c2e7f60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c2b0ba8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104321f28>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2104309400>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21043093c8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21046b6710>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21046b6ac8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21680ec0f0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21680d85f8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21680d8b70>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21046b2eb8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21680d82b0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f213024df98>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21682db908>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213024df60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21682dbef0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21046b6208>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130242400>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21682db5c0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21046b2c50>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21680dae10>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2168286c18>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21046b2c18>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21680ec860>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f216828e1d0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f21682868d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2168286e48>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21682aff60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21682affd0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21682415c0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f216826fb70>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2168277128>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f216826f828>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f216821bda0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f216821bd68>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21682aff28>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2168220240>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2168241908>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21681c5fd0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2168241f28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21681c5c88>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f21681ce048>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f21681ce390>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21681f7748>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21680a6d68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21680a6d30>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21680a6a20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f216804fc88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2168059630>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21681f1cc0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21680590f0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21681f7b00>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21307bbe10>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2168082128>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21307c6860>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f21307c60f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21307c6668>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21307f1978>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21307f1d30>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130781320>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21307a6d30>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21307aa6d8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21307aa198>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130651ef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21306599e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21307f1518>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130659128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130779eb8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21306066a0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130779e80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130606c18>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2130606358>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130606a20>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f2130631d30>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130631550>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21305c20b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21305ee518>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21305eea90>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21305ee1d0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130599828>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130599da0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130631710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21305994e0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21305ba9b0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130545a58>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21305c2898>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213054e198>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2130545710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130545dd8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f2130573e10>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130573ac8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130442320>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f213046e8d0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213046ee48>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f213046e588>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f213041abe0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130420198>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130573d68>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f213041a898>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130439cc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21303c6e10>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130442c50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21303c6dd8>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f21303ce2b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21303ce278>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21303efcc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213037a898>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21303836d8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21303b0c88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21303b0c50>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21303b0ef0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f213035af98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213035af60>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f213037a518>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130362400>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130383a20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130204dd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213038e160>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213020e780>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f213020e240>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f213020e588>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f2130238898>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2130238c50>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21301cd278>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21301eec50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21301f75f8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21301f70b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2130198eb8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21301a4908>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2130238438>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21301a4048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21301c4dd8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f213014f5c0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21301c4da0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f213014fb38>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f213014f278>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f213014f940>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210c7b9c50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c7b9470>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c7ca208>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c7eeeb8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c7f79b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c7f70f0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c7a2748>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c7a2cc0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c7b9630>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c7a2400>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c7c2da0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c74f978>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c7ca7b8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c74ff60>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c74f630>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c74fcf8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210c6fad30>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c6fa9e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c70c240>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c7387f0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c738d68>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c7384a8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c5e6b00>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c5ec0b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c6fafd0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c5e67b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c700be0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c58ed30>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c70cb70>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c58ecf8>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c58e9e8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c5971d0>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210c53af60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c53ada0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c54a5f8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c577ba8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c4ff160>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c577860>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c522eb8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c522e80>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c53aeb8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c52e358>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c54a940>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c38fcf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c54af60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c3986a0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c398160>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c3984a8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210c3447b8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c344b70>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c34c9b0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c378f60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c378f28>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c301400>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c324dd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c32a828>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c344358>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c32a0b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c34ccf8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c18ff60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c34ccc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c199a58>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c199198>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c199860>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210c144b70>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c144e80>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c153128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c178e80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c1008d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c100160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c12d668>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c12dbe0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c144710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c12d320>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c14ccc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c09a898>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c1536d8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c09ae10>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c09a550>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c09ac18>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f2104706f28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104706748>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104716160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21046c1710>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21046c1c88>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21046c13c8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21046eea20>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21046f6160>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104706908>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21046ee6d8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210470fb00>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104658c50>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104716a90>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104658c18>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2104658e80>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104658eb8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f2104504e10>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104504e80>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104516518>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21044c3ac8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21044cb080>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21044c3780>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21044ecdd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21044ecda0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104504dd8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21044f3240>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210450def0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104459c18>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104516e48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104459fd0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f2104460048>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21044603c8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210440a6d8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210440aa90>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104415c88>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21042c1e80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21042c1e48>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21042ca320>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21042eeda0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21042f6748>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210440a278>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21042f6208>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104415c18>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104297e80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104415be0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21042a2978>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f21042a20b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21042a2780>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210424ca90>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210424ce48>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104260048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21040c2da0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21040cb7f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21040cb080>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21040f7588>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21040f7b00>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210424c630>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21040f7240>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104256fd0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21040a37b8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104256c88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21040a3d30>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f21040a3470>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21040a3b38>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210404ee48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210404e668>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210405f080>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c47cd630>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c47cdba8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c47cd2e8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c47f8940>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c47f8f28>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210404e828>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c47f85f8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104055ac8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4623b70>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210405f9b0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4629128>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20c4623828>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c4623ef0>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f20c424cf28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c424cbe0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c425e438>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c420b9e8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c420bfd0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c420b6a0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4235cf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4235cc0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c424ce80>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c4235f60>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4256dd8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c41e1f28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c425ed68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c41e1ef0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20c41eb3c8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c41eb390>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f20c418ddd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c41949b0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c419e7f0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4149da0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4149d68>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c4153240>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4177cc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c40fe668>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c4194198>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c40fe128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c419eb38>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4120e48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c41a8160>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4128898>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20c4128128>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c41286a0>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f20c40d59b0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c40d5d68>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c40ea358>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c408ad68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4094710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c40941d0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c40b4f28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c403ea20>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c40d5550>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c403e160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c40dfef0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c406d6d8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c40dfeb8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c406dc50>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20c406d390>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c406da58>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f20a47d8d68>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a47d8588>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a47e80f0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a4792550>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a4792ac8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a4792208>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a473f860>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a473fdd8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a47d8748>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a473f518>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a47dd9e8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a476ca90>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a47e88d0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a4772080>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20a476c748>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a476ce10>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f20a4716e48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a4716b00>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a46ada20>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a4659f98>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a4659f60>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a4716da0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a46d55c0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a4660400>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a471ecf8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a4682b38>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a4604dd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a472bc88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a46880f0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a460c780>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a472b358>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a46827f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a460c240>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a46d5908>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a46add68>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a462feb8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a46d5ef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a46add30>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a45b99b0>,
 <tensorflow.python.keras.layers.pooling.MaxPooling2D at 0x7f20a45b90f0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20a45b97b8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a45e8048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a458ddd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a4597828>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a45970b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21041b7fd0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2104186908>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a45e2710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2104186320>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a45e2cc0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac12c978>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a45e2fd0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac12ca90>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f21683568d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2168356940>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21ac5e3048>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac5e3f98>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac6693c8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2c305f3b00>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c0be5c0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c0be080>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222427ba20>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2244153978>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac5e3780>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22247bcf60>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac669dd8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac6fc0f0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac5ba780>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c6a6278>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f22242265c0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac726dd8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21986f9908>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21986f9358>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c459f98>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac675668>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22ac792a20>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c44fcdd8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2224391a58>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4307048>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21986f9400>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2224391ac8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac72e588>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104638358>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac72edd8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c043828>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c043cf8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c043a90>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f2c305dbac8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2c305dbda0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c46bb2e8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac659cf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22ac74c6a0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22ac74c160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac736240>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac72b8d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2c305db8d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac72b160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4754d68>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c471588>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a453ae48>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c471b00>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f222c4715f8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c471908>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21ac304c18>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac304438>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac2ff1d0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac320e80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac488978>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac4880b8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2244110630>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2244110ba8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac3045f8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22441102e8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac300d68>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21ac6c8860>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac2ff780>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21ac6c8dd8>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f21ac6c88d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21ac6c8be0>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21041b5ef0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21041b5710>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2168359128>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21683476d8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2168347c50>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f2168347390>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f222c0f3908>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f222c0f3ef0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21041b58d0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f222c0f35c0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f2104181ac8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f22243b2b38>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f2168359a58>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f22243a80f0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f22243b2ba8>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f22243b2eb8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f210c0557b8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c0555c0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c04d400>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c432c9b0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c432cf98>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c432c668>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4740be0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4777198>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c055898>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c4740898>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c039da0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f224444ee10>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c04dd30>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f224444edd8>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f224445b080>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f224445b278>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21043becc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21043cf898>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21043ca588>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21683f2c88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21683f2c50>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21683f2ef0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c455beb8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c455be80>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21043cf518>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c455d358>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21043ca198>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f210c264cf8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21043e4160>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f210c26a6a0>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f210c26a198>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f210c26a4a8>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f21045d67b8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21045d6b70>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21045f19b0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c42f2f60>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c42f2f28>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c42d0400>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c436eda0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4348748>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f21045d6358>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c4348208>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f21045f1cf8>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c4526e80>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f21045f1cc0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c4527978>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20c4527470>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c4527780>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f20c450ba90>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c450be48>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a454c048>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a456eda0>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a45747f0>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20a4574080>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c44e2f28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c44f2a20>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c450b630>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c44f2160>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20a453ffd0>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c457b6d8>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20a453fc88>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c457bc50>,
 <tensorflow.python.keras.layers.merge.Concatenate at 0x7f20c457b748>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c457ba58>,
 <tensorflow.python.keras.layers.core.Lambda at 0x7f20c437bd68>,
 <tensorflow.python.keras.layers.convolutional.Conv2D at 0x7f20c437b588>,
 <tensorflow.python.keras.layers.normalization_v2.BatchNormalization at 0x7f20c43adf28>,
 <tensorflow.python.keras.layers.core.Activation at 0x7f20c43adef0>,
 <tensorflow.python.keras.layers.pooling.GlobalAveragePooling2D at 0x7f20c448be10>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f20c46c50b8>,
 <tensorflow.python.keras.layers.core.Dropout at 0x7f20a44f9080>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f20a451f978>,
 <tensorflow.python.keras.layers.core.Dropout at 0x7f20a451f518>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f20c44702b0>,
 <tensorflow.python.keras.layers.core.Dense at 0x7f20a4520cf8>]
In [60]:
# Visualize the structure and layers of the model
print(model.summary())
Model: "model_123"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_4 (InputLayer)            [(None, 512, 512, 3) 0                                            
__________________________________________________________________________________________________
conv2d_129 (Conv2D)             (None, 255, 255, 32) 864         input_4[0][0]                    
__________________________________________________________________________________________________
batch_normalization_98 (BatchNo (None, 255, 255, 32) 96          conv2d_129[0][0]                 
__________________________________________________________________________________________________
activation_98 (Activation)      (None, 255, 255, 32) 0           batch_normalization_98[0][0]     
__________________________________________________________________________________________________
conv2d_130 (Conv2D)             (None, 253, 253, 32) 9216        activation_98[0][0]              
__________________________________________________________________________________________________
batch_normalization_99 (BatchNo (None, 253, 253, 32) 96          conv2d_130[0][0]                 
__________________________________________________________________________________________________
activation_99 (Activation)      (None, 253, 253, 32) 0           batch_normalization_99[0][0]     
__________________________________________________________________________________________________
conv2d_131 (Conv2D)             (None, 253, 253, 64) 18432       activation_99[0][0]              
__________________________________________________________________________________________________
batch_normalization_100 (BatchN (None, 253, 253, 64) 192         conv2d_131[0][0]                 
__________________________________________________________________________________________________
activation_100 (Activation)     (None, 253, 253, 64) 0           batch_normalization_100[0][0]    
__________________________________________________________________________________________________
max_pooling2d_14 (MaxPooling2D) (None, 126, 126, 64) 0           activation_100[0][0]             
__________________________________________________________________________________________________
conv2d_132 (Conv2D)             (None, 126, 126, 80) 5120        max_pooling2d_14[0][0]           
__________________________________________________________________________________________________
batch_normalization_101 (BatchN (None, 126, 126, 80) 240         conv2d_132[0][0]                 
__________________________________________________________________________________________________
activation_101 (Activation)     (None, 126, 126, 80) 0           batch_normalization_101[0][0]    
__________________________________________________________________________________________________
conv2d_133 (Conv2D)             (None, 124, 124, 192 138240      activation_101[0][0]             
__________________________________________________________________________________________________
batch_normalization_102 (BatchN (None, 124, 124, 192 576         conv2d_133[0][0]                 
__________________________________________________________________________________________________
activation_102 (Activation)     (None, 124, 124, 192 0           batch_normalization_102[0][0]    
__________________________________________________________________________________________________
max_pooling2d_15 (MaxPooling2D) (None, 61, 61, 192)  0           activation_102[0][0]             
__________________________________________________________________________________________________
conv2d_137 (Conv2D)             (None, 61, 61, 64)   12288       max_pooling2d_15[0][0]           
__________________________________________________________________________________________________
batch_normalization_106 (BatchN (None, 61, 61, 64)   192         conv2d_137[0][0]                 
__________________________________________________________________________________________________
activation_106 (Activation)     (None, 61, 61, 64)   0           batch_normalization_106[0][0]    
__________________________________________________________________________________________________
conv2d_135 (Conv2D)             (None, 61, 61, 48)   9216        max_pooling2d_15[0][0]           
__________________________________________________________________________________________________
conv2d_138 (Conv2D)             (None, 61, 61, 96)   55296       activation_106[0][0]             
__________________________________________________________________________________________________
batch_normalization_104 (BatchN (None, 61, 61, 48)   144         conv2d_135[0][0]                 
__________________________________________________________________________________________________
batch_normalization_107 (BatchN (None, 61, 61, 96)   288         conv2d_138[0][0]                 
__________________________________________________________________________________________________
activation_104 (Activation)     (None, 61, 61, 48)   0           batch_normalization_104[0][0]    
__________________________________________________________________________________________________
activation_107 (Activation)     (None, 61, 61, 96)   0           batch_normalization_107[0][0]    
__________________________________________________________________________________________________
average_pooling2d_9 (AveragePoo (None, 61, 61, 192)  0           max_pooling2d_15[0][0]           
__________________________________________________________________________________________________
conv2d_134 (Conv2D)             (None, 61, 61, 96)   18432       max_pooling2d_15[0][0]           
__________________________________________________________________________________________________
conv2d_136 (Conv2D)             (None, 61, 61, 64)   76800       activation_104[0][0]             
__________________________________________________________________________________________________
conv2d_139 (Conv2D)             (None, 61, 61, 96)   82944       activation_107[0][0]             
__________________________________________________________________________________________________
conv2d_140 (Conv2D)             (None, 61, 61, 64)   12288       average_pooling2d_9[0][0]        
__________________________________________________________________________________________________
batch_normalization_103 (BatchN (None, 61, 61, 96)   288         conv2d_134[0][0]                 
__________________________________________________________________________________________________
batch_normalization_105 (BatchN (None, 61, 61, 64)   192         conv2d_136[0][0]                 
__________________________________________________________________________________________________
batch_normalization_108 (BatchN (None, 61, 61, 96)   288         conv2d_139[0][0]                 
__________________________________________________________________________________________________
batch_normalization_109 (BatchN (None, 61, 61, 64)   192         conv2d_140[0][0]                 
__________________________________________________________________________________________________
activation_103 (Activation)     (None, 61, 61, 96)   0           batch_normalization_103[0][0]    
__________________________________________________________________________________________________
activation_105 (Activation)     (None, 61, 61, 64)   0           batch_normalization_105[0][0]    
__________________________________________________________________________________________________
activation_108 (Activation)     (None, 61, 61, 96)   0           batch_normalization_108[0][0]    
__________________________________________________________________________________________________
activation_109 (Activation)     (None, 61, 61, 64)   0           batch_normalization_109[0][0]    
__________________________________________________________________________________________________
mixed_5b (Concatenate)          (None, 61, 61, 320)  0           activation_103[0][0]             
                                                                 activation_105[0][0]             
                                                                 activation_108[0][0]             
                                                                 activation_109[0][0]             
__________________________________________________________________________________________________
conv2d_144 (Conv2D)             (None, 61, 61, 32)   10240       mixed_5b[0][0]                   
__________________________________________________________________________________________________
batch_normalization_113 (BatchN (None, 61, 61, 32)   96          conv2d_144[0][0]                 
__________________________________________________________________________________________________
activation_113 (Activation)     (None, 61, 61, 32)   0           batch_normalization_113[0][0]    
__________________________________________________________________________________________________
conv2d_142 (Conv2D)             (None, 61, 61, 32)   10240       mixed_5b[0][0]                   
__________________________________________________________________________________________________
conv2d_145 (Conv2D)             (None, 61, 61, 48)   13824       activation_113[0][0]             
__________________________________________________________________________________________________
batch_normalization_111 (BatchN (None, 61, 61, 32)   96          conv2d_142[0][0]                 
__________________________________________________________________________________________________
batch_normalization_114 (BatchN (None, 61, 61, 48)   144         conv2d_145[0][0]                 
__________________________________________________________________________________________________
activation_111 (Activation)     (None, 61, 61, 32)   0           batch_normalization_111[0][0]    
__________________________________________________________________________________________________
activation_114 (Activation)     (None, 61, 61, 48)   0           batch_normalization_114[0][0]    
__________________________________________________________________________________________________
conv2d_141 (Conv2D)             (None, 61, 61, 32)   10240       mixed_5b[0][0]                   
__________________________________________________________________________________________________
conv2d_143 (Conv2D)             (None, 61, 61, 32)   9216        activation_111[0][0]             
__________________________________________________________________________________________________
conv2d_146 (Conv2D)             (None, 61, 61, 64)   27648       activation_114[0][0]             
__________________________________________________________________________________________________
batch_normalization_110 (BatchN (None, 61, 61, 32)   96          conv2d_141[0][0]                 
__________________________________________________________________________________________________
batch_normalization_112 (BatchN (None, 61, 61, 32)   96          conv2d_143[0][0]                 
__________________________________________________________________________________________________
batch_normalization_115 (BatchN (None, 61, 61, 64)   192         conv2d_146[0][0]                 
__________________________________________________________________________________________________
activation_110 (Activation)     (None, 61, 61, 32)   0           batch_normalization_110[0][0]    
__________________________________________________________________________________________________
activation_112 (Activation)     (None, 61, 61, 32)   0           batch_normalization_112[0][0]    
__________________________________________________________________________________________________
activation_115 (Activation)     (None, 61, 61, 64)   0           batch_normalization_115[0][0]    
__________________________________________________________________________________________________
block35_1_mixed (Concatenate)   (None, 61, 61, 128)  0           activation_110[0][0]             
                                                                 activation_112[0][0]             
                                                                 activation_115[0][0]             
__________________________________________________________________________________________________
block35_1_conv (Conv2D)         (None, 61, 61, 320)  41280       block35_1_mixed[0][0]            
__________________________________________________________________________________________________
block35_1 (Lambda)              (None, 61, 61, 320)  0           mixed_5b[0][0]                   
                                                                 block35_1_conv[0][0]             
__________________________________________________________________________________________________
block35_1_ac (Activation)       (None, 61, 61, 320)  0           block35_1[0][0]                  
__________________________________________________________________________________________________
conv2d_150 (Conv2D)             (None, 61, 61, 32)   10240       block35_1_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_119 (BatchN (None, 61, 61, 32)   96          conv2d_150[0][0]                 
__________________________________________________________________________________________________
activation_119 (Activation)     (None, 61, 61, 32)   0           batch_normalization_119[0][0]    
__________________________________________________________________________________________________
conv2d_148 (Conv2D)             (None, 61, 61, 32)   10240       block35_1_ac[0][0]               
__________________________________________________________________________________________________
conv2d_151 (Conv2D)             (None, 61, 61, 48)   13824       activation_119[0][0]             
__________________________________________________________________________________________________
batch_normalization_117 (BatchN (None, 61, 61, 32)   96          conv2d_148[0][0]                 
__________________________________________________________________________________________________
batch_normalization_120 (BatchN (None, 61, 61, 48)   144         conv2d_151[0][0]                 
__________________________________________________________________________________________________
activation_117 (Activation)     (None, 61, 61, 32)   0           batch_normalization_117[0][0]    
__________________________________________________________________________________________________
activation_120 (Activation)     (None, 61, 61, 48)   0           batch_normalization_120[0][0]    
__________________________________________________________________________________________________
conv2d_147 (Conv2D)             (None, 61, 61, 32)   10240       block35_1_ac[0][0]               
__________________________________________________________________________________________________
conv2d_149 (Conv2D)             (None, 61, 61, 32)   9216        activation_117[0][0]             
__________________________________________________________________________________________________
conv2d_152 (Conv2D)             (None, 61, 61, 64)   27648       activation_120[0][0]             
__________________________________________________________________________________________________
batch_normalization_116 (BatchN (None, 61, 61, 32)   96          conv2d_147[0][0]                 
__________________________________________________________________________________________________
batch_normalization_118 (BatchN (None, 61, 61, 32)   96          conv2d_149[0][0]                 
__________________________________________________________________________________________________
batch_normalization_121 (BatchN (None, 61, 61, 64)   192         conv2d_152[0][0]                 
__________________________________________________________________________________________________
activation_116 (Activation)     (None, 61, 61, 32)   0           batch_normalization_116[0][0]    
__________________________________________________________________________________________________
activation_118 (Activation)     (None, 61, 61, 32)   0           batch_normalization_118[0][0]    
__________________________________________________________________________________________________
activation_121 (Activation)     (None, 61, 61, 64)   0           batch_normalization_121[0][0]    
__________________________________________________________________________________________________
block35_2_mixed (Concatenate)   (None, 61, 61, 128)  0           activation_116[0][0]             
                                                                 activation_118[0][0]             
                                                                 activation_121[0][0]             
__________________________________________________________________________________________________
block35_2_conv (Conv2D)         (None, 61, 61, 320)  41280       block35_2_mixed[0][0]            
__________________________________________________________________________________________________
block35_2 (Lambda)              (None, 61, 61, 320)  0           block35_1_ac[0][0]               
                                                                 block35_2_conv[0][0]             
__________________________________________________________________________________________________
block35_2_ac (Activation)       (None, 61, 61, 320)  0           block35_2[0][0]                  
__________________________________________________________________________________________________
conv2d_156 (Conv2D)             (None, 61, 61, 32)   10240       block35_2_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_125 (BatchN (None, 61, 61, 32)   96          conv2d_156[0][0]                 
__________________________________________________________________________________________________
activation_125 (Activation)     (None, 61, 61, 32)   0           batch_normalization_125[0][0]    
__________________________________________________________________________________________________
conv2d_154 (Conv2D)             (None, 61, 61, 32)   10240       block35_2_ac[0][0]               
__________________________________________________________________________________________________
conv2d_157 (Conv2D)             (None, 61, 61, 48)   13824       activation_125[0][0]             
__________________________________________________________________________________________________
batch_normalization_123 (BatchN (None, 61, 61, 32)   96          conv2d_154[0][0]                 
__________________________________________________________________________________________________
batch_normalization_126 (BatchN (None, 61, 61, 48)   144         conv2d_157[0][0]                 
__________________________________________________________________________________________________
activation_123 (Activation)     (None, 61, 61, 32)   0           batch_normalization_123[0][0]    
__________________________________________________________________________________________________
activation_126 (Activation)     (None, 61, 61, 48)   0           batch_normalization_126[0][0]    
__________________________________________________________________________________________________
conv2d_153 (Conv2D)             (None, 61, 61, 32)   10240       block35_2_ac[0][0]               
__________________________________________________________________________________________________
conv2d_155 (Conv2D)             (None, 61, 61, 32)   9216        activation_123[0][0]             
__________________________________________________________________________________________________
conv2d_158 (Conv2D)             (None, 61, 61, 64)   27648       activation_126[0][0]             
__________________________________________________________________________________________________
batch_normalization_122 (BatchN (None, 61, 61, 32)   96          conv2d_153[0][0]                 
__________________________________________________________________________________________________
batch_normalization_124 (BatchN (None, 61, 61, 32)   96          conv2d_155[0][0]                 
__________________________________________________________________________________________________
batch_normalization_127 (BatchN (None, 61, 61, 64)   192         conv2d_158[0][0]                 
__________________________________________________________________________________________________
activation_122 (Activation)     (None, 61, 61, 32)   0           batch_normalization_122[0][0]    
__________________________________________________________________________________________________
activation_124 (Activation)     (None, 61, 61, 32)   0           batch_normalization_124[0][0]    
__________________________________________________________________________________________________
activation_127 (Activation)     (None, 61, 61, 64)   0           batch_normalization_127[0][0]    
__________________________________________________________________________________________________
block35_3_mixed (Concatenate)   (None, 61, 61, 128)  0           activation_122[0][0]             
                                                                 activation_124[0][0]             
                                                                 activation_127[0][0]             
__________________________________________________________________________________________________
block35_3_conv (Conv2D)         (None, 61, 61, 320)  41280       block35_3_mixed[0][0]            
__________________________________________________________________________________________________
block35_3 (Lambda)              (None, 61, 61, 320)  0           block35_2_ac[0][0]               
                                                                 block35_3_conv[0][0]             
__________________________________________________________________________________________________
block35_3_ac (Activation)       (None, 61, 61, 320)  0           block35_3[0][0]                  
__________________________________________________________________________________________________
conv2d_162 (Conv2D)             (None, 61, 61, 32)   10240       block35_3_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_131 (BatchN (None, 61, 61, 32)   96          conv2d_162[0][0]                 
__________________________________________________________________________________________________
activation_131 (Activation)     (None, 61, 61, 32)   0           batch_normalization_131[0][0]    
__________________________________________________________________________________________________
conv2d_160 (Conv2D)             (None, 61, 61, 32)   10240       block35_3_ac[0][0]               
__________________________________________________________________________________________________
conv2d_163 (Conv2D)             (None, 61, 61, 48)   13824       activation_131[0][0]             
__________________________________________________________________________________________________
batch_normalization_129 (BatchN (None, 61, 61, 32)   96          conv2d_160[0][0]                 
__________________________________________________________________________________________________
batch_normalization_132 (BatchN (None, 61, 61, 48)   144         conv2d_163[0][0]                 
__________________________________________________________________________________________________
activation_129 (Activation)     (None, 61, 61, 32)   0           batch_normalization_129[0][0]    
__________________________________________________________________________________________________
activation_132 (Activation)     (None, 61, 61, 48)   0           batch_normalization_132[0][0]    
__________________________________________________________________________________________________
conv2d_159 (Conv2D)             (None, 61, 61, 32)   10240       block35_3_ac[0][0]               
__________________________________________________________________________________________________
conv2d_161 (Conv2D)             (None, 61, 61, 32)   9216        activation_129[0][0]             
__________________________________________________________________________________________________
conv2d_164 (Conv2D)             (None, 61, 61, 64)   27648       activation_132[0][0]             
__________________________________________________________________________________________________
batch_normalization_128 (BatchN (None, 61, 61, 32)   96          conv2d_159[0][0]                 
__________________________________________________________________________________________________
batch_normalization_130 (BatchN (None, 61, 61, 32)   96          conv2d_161[0][0]                 
__________________________________________________________________________________________________
batch_normalization_133 (BatchN (None, 61, 61, 64)   192         conv2d_164[0][0]                 
__________________________________________________________________________________________________
activation_128 (Activation)     (None, 61, 61, 32)   0           batch_normalization_128[0][0]    
__________________________________________________________________________________________________
activation_130 (Activation)     (None, 61, 61, 32)   0           batch_normalization_130[0][0]    
__________________________________________________________________________________________________
activation_133 (Activation)     (None, 61, 61, 64)   0           batch_normalization_133[0][0]    
__________________________________________________________________________________________________
block35_4_mixed (Concatenate)   (None, 61, 61, 128)  0           activation_128[0][0]             
                                                                 activation_130[0][0]             
                                                                 activation_133[0][0]             
__________________________________________________________________________________________________
block35_4_conv (Conv2D)         (None, 61, 61, 320)  41280       block35_4_mixed[0][0]            
__________________________________________________________________________________________________
block35_4 (Lambda)              (None, 61, 61, 320)  0           block35_3_ac[0][0]               
                                                                 block35_4_conv[0][0]             
__________________________________________________________________________________________________
block35_4_ac (Activation)       (None, 61, 61, 320)  0           block35_4[0][0]                  
__________________________________________________________________________________________________
conv2d_168 (Conv2D)             (None, 61, 61, 32)   10240       block35_4_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_137 (BatchN (None, 61, 61, 32)   96          conv2d_168[0][0]                 
__________________________________________________________________________________________________
activation_137 (Activation)     (None, 61, 61, 32)   0           batch_normalization_137[0][0]    
__________________________________________________________________________________________________
conv2d_166 (Conv2D)             (None, 61, 61, 32)   10240       block35_4_ac[0][0]               
__________________________________________________________________________________________________
conv2d_169 (Conv2D)             (None, 61, 61, 48)   13824       activation_137[0][0]             
__________________________________________________________________________________________________
batch_normalization_135 (BatchN (None, 61, 61, 32)   96          conv2d_166[0][0]                 
__________________________________________________________________________________________________
batch_normalization_138 (BatchN (None, 61, 61, 48)   144         conv2d_169[0][0]                 
__________________________________________________________________________________________________
activation_135 (Activation)     (None, 61, 61, 32)   0           batch_normalization_135[0][0]    
__________________________________________________________________________________________________
activation_138 (Activation)     (None, 61, 61, 48)   0           batch_normalization_138[0][0]    
__________________________________________________________________________________________________
conv2d_165 (Conv2D)             (None, 61, 61, 32)   10240       block35_4_ac[0][0]               
__________________________________________________________________________________________________
conv2d_167 (Conv2D)             (None, 61, 61, 32)   9216        activation_135[0][0]             
__________________________________________________________________________________________________
conv2d_170 (Conv2D)             (None, 61, 61, 64)   27648       activation_138[0][0]             
__________________________________________________________________________________________________
batch_normalization_134 (BatchN (None, 61, 61, 32)   96          conv2d_165[0][0]                 
__________________________________________________________________________________________________
batch_normalization_136 (BatchN (None, 61, 61, 32)   96          conv2d_167[0][0]                 
__________________________________________________________________________________________________
batch_normalization_139 (BatchN (None, 61, 61, 64)   192         conv2d_170[0][0]                 
__________________________________________________________________________________________________
activation_134 (Activation)     (None, 61, 61, 32)   0           batch_normalization_134[0][0]    
__________________________________________________________________________________________________
activation_136 (Activation)     (None, 61, 61, 32)   0           batch_normalization_136[0][0]    
__________________________________________________________________________________________________
activation_139 (Activation)     (None, 61, 61, 64)   0           batch_normalization_139[0][0]    
__________________________________________________________________________________________________
block35_5_mixed (Concatenate)   (None, 61, 61, 128)  0           activation_134[0][0]             
                                                                 activation_136[0][0]             
                                                                 activation_139[0][0]             
__________________________________________________________________________________________________
block35_5_conv (Conv2D)         (None, 61, 61, 320)  41280       block35_5_mixed[0][0]            
__________________________________________________________________________________________________
block35_5 (Lambda)              (None, 61, 61, 320)  0           block35_4_ac[0][0]               
                                                                 block35_5_conv[0][0]             
__________________________________________________________________________________________________
block35_5_ac (Activation)       (None, 61, 61, 320)  0           block35_5[0][0]                  
__________________________________________________________________________________________________
conv2d_174 (Conv2D)             (None, 61, 61, 32)   10240       block35_5_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_143 (BatchN (None, 61, 61, 32)   96          conv2d_174[0][0]                 
__________________________________________________________________________________________________
activation_143 (Activation)     (None, 61, 61, 32)   0           batch_normalization_143[0][0]    
__________________________________________________________________________________________________
conv2d_172 (Conv2D)             (None, 61, 61, 32)   10240       block35_5_ac[0][0]               
__________________________________________________________________________________________________
conv2d_175 (Conv2D)             (None, 61, 61, 48)   13824       activation_143[0][0]             
__________________________________________________________________________________________________
batch_normalization_141 (BatchN (None, 61, 61, 32)   96          conv2d_172[0][0]                 
__________________________________________________________________________________________________
batch_normalization_144 (BatchN (None, 61, 61, 48)   144         conv2d_175[0][0]                 
__________________________________________________________________________________________________
activation_141 (Activation)     (None, 61, 61, 32)   0           batch_normalization_141[0][0]    
__________________________________________________________________________________________________
activation_144 (Activation)     (None, 61, 61, 48)   0           batch_normalization_144[0][0]    
__________________________________________________________________________________________________
conv2d_171 (Conv2D)             (None, 61, 61, 32)   10240       block35_5_ac[0][0]               
__________________________________________________________________________________________________
conv2d_173 (Conv2D)             (None, 61, 61, 32)   9216        activation_141[0][0]             
__________________________________________________________________________________________________
conv2d_176 (Conv2D)             (None, 61, 61, 64)   27648       activation_144[0][0]             
__________________________________________________________________________________________________
batch_normalization_140 (BatchN (None, 61, 61, 32)   96          conv2d_171[0][0]                 
__________________________________________________________________________________________________
batch_normalization_142 (BatchN (None, 61, 61, 32)   96          conv2d_173[0][0]                 
__________________________________________________________________________________________________
batch_normalization_145 (BatchN (None, 61, 61, 64)   192         conv2d_176[0][0]                 
__________________________________________________________________________________________________
activation_140 (Activation)     (None, 61, 61, 32)   0           batch_normalization_140[0][0]    
__________________________________________________________________________________________________
activation_142 (Activation)     (None, 61, 61, 32)   0           batch_normalization_142[0][0]    
__________________________________________________________________________________________________
activation_145 (Activation)     (None, 61, 61, 64)   0           batch_normalization_145[0][0]    
__________________________________________________________________________________________________
block35_6_mixed (Concatenate)   (None, 61, 61, 128)  0           activation_140[0][0]             
                                                                 activation_142[0][0]             
                                                                 activation_145[0][0]             
__________________________________________________________________________________________________
block35_6_conv (Conv2D)         (None, 61, 61, 320)  41280       block35_6_mixed[0][0]            
__________________________________________________________________________________________________
block35_6 (Lambda)              (None, 61, 61, 320)  0           block35_5_ac[0][0]               
                                                                 block35_6_conv[0][0]             
__________________________________________________________________________________________________
block35_6_ac (Activation)       (None, 61, 61, 320)  0           block35_6[0][0]                  
__________________________________________________________________________________________________
conv2d_180 (Conv2D)             (None, 61, 61, 32)   10240       block35_6_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_149 (BatchN (None, 61, 61, 32)   96          conv2d_180[0][0]                 
__________________________________________________________________________________________________
activation_149 (Activation)     (None, 61, 61, 32)   0           batch_normalization_149[0][0]    
__________________________________________________________________________________________________
conv2d_178 (Conv2D)             (None, 61, 61, 32)   10240       block35_6_ac[0][0]               
__________________________________________________________________________________________________
conv2d_181 (Conv2D)             (None, 61, 61, 48)   13824       activation_149[0][0]             
__________________________________________________________________________________________________
batch_normalization_147 (BatchN (None, 61, 61, 32)   96          conv2d_178[0][0]                 
__________________________________________________________________________________________________
batch_normalization_150 (BatchN (None, 61, 61, 48)   144         conv2d_181[0][0]                 
__________________________________________________________________________________________________
activation_147 (Activation)     (None, 61, 61, 32)   0           batch_normalization_147[0][0]    
__________________________________________________________________________________________________
activation_150 (Activation)     (None, 61, 61, 48)   0           batch_normalization_150[0][0]    
__________________________________________________________________________________________________
conv2d_177 (Conv2D)             (None, 61, 61, 32)   10240       block35_6_ac[0][0]               
__________________________________________________________________________________________________
conv2d_179 (Conv2D)             (None, 61, 61, 32)   9216        activation_147[0][0]             
__________________________________________________________________________________________________
conv2d_182 (Conv2D)             (None, 61, 61, 64)   27648       activation_150[0][0]             
__________________________________________________________________________________________________
batch_normalization_146 (BatchN (None, 61, 61, 32)   96          conv2d_177[0][0]                 
__________________________________________________________________________________________________
batch_normalization_148 (BatchN (None, 61, 61, 32)   96          conv2d_179[0][0]                 
__________________________________________________________________________________________________
batch_normalization_151 (BatchN (None, 61, 61, 64)   192         conv2d_182[0][0]                 
__________________________________________________________________________________________________
activation_146 (Activation)     (None, 61, 61, 32)   0           batch_normalization_146[0][0]    
__________________________________________________________________________________________________
activation_148 (Activation)     (None, 61, 61, 32)   0           batch_normalization_148[0][0]    
__________________________________________________________________________________________________
activation_151 (Activation)     (None, 61, 61, 64)   0           batch_normalization_151[0][0]    
__________________________________________________________________________________________________
block35_7_mixed (Concatenate)   (None, 61, 61, 128)  0           activation_146[0][0]             
                                                                 activation_148[0][0]             
                                                                 activation_151[0][0]             
__________________________________________________________________________________________________
block35_7_conv (Conv2D)         (None, 61, 61, 320)  41280       block35_7_mixed[0][0]            
__________________________________________________________________________________________________
block35_7 (Lambda)              (None, 61, 61, 320)  0           block35_6_ac[0][0]               
                                                                 block35_7_conv[0][0]             
__________________________________________________________________________________________________
block35_7_ac (Activation)       (None, 61, 61, 320)  0           block35_7[0][0]                  
__________________________________________________________________________________________________
conv2d_186 (Conv2D)             (None, 61, 61, 32)   10240       block35_7_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_155 (BatchN (None, 61, 61, 32)   96          conv2d_186[0][0]                 
__________________________________________________________________________________________________
activation_155 (Activation)     (None, 61, 61, 32)   0           batch_normalization_155[0][0]    
__________________________________________________________________________________________________
conv2d_184 (Conv2D)             (None, 61, 61, 32)   10240       block35_7_ac[0][0]               
__________________________________________________________________________________________________
conv2d_187 (Conv2D)             (None, 61, 61, 48)   13824       activation_155[0][0]             
__________________________________________________________________________________________________
batch_normalization_153 (BatchN (None, 61, 61, 32)   96          conv2d_184[0][0]                 
__________________________________________________________________________________________________
batch_normalization_156 (BatchN (None, 61, 61, 48)   144         conv2d_187[0][0]                 
__________________________________________________________________________________________________
activation_153 (Activation)     (None, 61, 61, 32)   0           batch_normalization_153[0][0]    
__________________________________________________________________________________________________
activation_156 (Activation)     (None, 61, 61, 48)   0           batch_normalization_156[0][0]    
__________________________________________________________________________________________________
conv2d_183 (Conv2D)             (None, 61, 61, 32)   10240       block35_7_ac[0][0]               
__________________________________________________________________________________________________
conv2d_185 (Conv2D)             (None, 61, 61, 32)   9216        activation_153[0][0]             
__________________________________________________________________________________________________
conv2d_188 (Conv2D)             (None, 61, 61, 64)   27648       activation_156[0][0]             
__________________________________________________________________________________________________
batch_normalization_152 (BatchN (None, 61, 61, 32)   96          conv2d_183[0][0]                 
__________________________________________________________________________________________________
batch_normalization_154 (BatchN (None, 61, 61, 32)   96          conv2d_185[0][0]                 
__________________________________________________________________________________________________
batch_normalization_157 (BatchN (None, 61, 61, 64)   192         conv2d_188[0][0]                 
__________________________________________________________________________________________________
activation_152 (Activation)     (None, 61, 61, 32)   0           batch_normalization_152[0][0]    
__________________________________________________________________________________________________
activation_154 (Activation)     (None, 61, 61, 32)   0           batch_normalization_154[0][0]    
__________________________________________________________________________________________________
activation_157 (Activation)     (None, 61, 61, 64)   0           batch_normalization_157[0][0]    
__________________________________________________________________________________________________
block35_8_mixed (Concatenate)   (None, 61, 61, 128)  0           activation_152[0][0]             
                                                                 activation_154[0][0]             
                                                                 activation_157[0][0]             
__________________________________________________________________________________________________
block35_8_conv (Conv2D)         (None, 61, 61, 320)  41280       block35_8_mixed[0][0]            
__________________________________________________________________________________________________
block35_8 (Lambda)              (None, 61, 61, 320)  0           block35_7_ac[0][0]               
                                                                 block35_8_conv[0][0]             
__________________________________________________________________________________________________
block35_8_ac (Activation)       (None, 61, 61, 320)  0           block35_8[0][0]                  
__________________________________________________________________________________________________
conv2d_192 (Conv2D)             (None, 61, 61, 32)   10240       block35_8_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_161 (BatchN (None, 61, 61, 32)   96          conv2d_192[0][0]                 
__________________________________________________________________________________________________
activation_161 (Activation)     (None, 61, 61, 32)   0           batch_normalization_161[0][0]    
__________________________________________________________________________________________________
conv2d_190 (Conv2D)             (None, 61, 61, 32)   10240       block35_8_ac[0][0]               
__________________________________________________________________________________________________
conv2d_193 (Conv2D)             (None, 61, 61, 48)   13824       activation_161[0][0]             
__________________________________________________________________________________________________
batch_normalization_159 (BatchN (None, 61, 61, 32)   96          conv2d_190[0][0]                 
__________________________________________________________________________________________________
batch_normalization_162 (BatchN (None, 61, 61, 48)   144         conv2d_193[0][0]                 
__________________________________________________________________________________________________
activation_159 (Activation)     (None, 61, 61, 32)   0           batch_normalization_159[0][0]    
__________________________________________________________________________________________________
activation_162 (Activation)     (None, 61, 61, 48)   0           batch_normalization_162[0][0]    
__________________________________________________________________________________________________
conv2d_189 (Conv2D)             (None, 61, 61, 32)   10240       block35_8_ac[0][0]               
__________________________________________________________________________________________________
conv2d_191 (Conv2D)             (None, 61, 61, 32)   9216        activation_159[0][0]             
__________________________________________________________________________________________________
conv2d_194 (Conv2D)             (None, 61, 61, 64)   27648       activation_162[0][0]             
__________________________________________________________________________________________________
batch_normalization_158 (BatchN (None, 61, 61, 32)   96          conv2d_189[0][0]                 
__________________________________________________________________________________________________
batch_normalization_160 (BatchN (None, 61, 61, 32)   96          conv2d_191[0][0]                 
__________________________________________________________________________________________________
batch_normalization_163 (BatchN (None, 61, 61, 64)   192         conv2d_194[0][0]                 
__________________________________________________________________________________________________
activation_158 (Activation)     (None, 61, 61, 32)   0           batch_normalization_158[0][0]    
__________________________________________________________________________________________________
activation_160 (Activation)     (None, 61, 61, 32)   0           batch_normalization_160[0][0]    
__________________________________________________________________________________________________
activation_163 (Activation)     (None, 61, 61, 64)   0           batch_normalization_163[0][0]    
__________________________________________________________________________________________________
block35_9_mixed (Concatenate)   (None, 61, 61, 128)  0           activation_158[0][0]             
                                                                 activation_160[0][0]             
                                                                 activation_163[0][0]             
__________________________________________________________________________________________________
block35_9_conv (Conv2D)         (None, 61, 61, 320)  41280       block35_9_mixed[0][0]            
__________________________________________________________________________________________________
block35_9 (Lambda)              (None, 61, 61, 320)  0           block35_8_ac[0][0]               
                                                                 block35_9_conv[0][0]             
__________________________________________________________________________________________________
block35_9_ac (Activation)       (None, 61, 61, 320)  0           block35_9[0][0]                  
__________________________________________________________________________________________________
conv2d_198 (Conv2D)             (None, 61, 61, 32)   10240       block35_9_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_167 (BatchN (None, 61, 61, 32)   96          conv2d_198[0][0]                 
__________________________________________________________________________________________________
activation_167 (Activation)     (None, 61, 61, 32)   0           batch_normalization_167[0][0]    
__________________________________________________________________________________________________
conv2d_196 (Conv2D)             (None, 61, 61, 32)   10240       block35_9_ac[0][0]               
__________________________________________________________________________________________________
conv2d_199 (Conv2D)             (None, 61, 61, 48)   13824       activation_167[0][0]             
__________________________________________________________________________________________________
batch_normalization_165 (BatchN (None, 61, 61, 32)   96          conv2d_196[0][0]                 
__________________________________________________________________________________________________
batch_normalization_168 (BatchN (None, 61, 61, 48)   144         conv2d_199[0][0]                 
__________________________________________________________________________________________________
activation_165 (Activation)     (None, 61, 61, 32)   0           batch_normalization_165[0][0]    
__________________________________________________________________________________________________
activation_168 (Activation)     (None, 61, 61, 48)   0           batch_normalization_168[0][0]    
__________________________________________________________________________________________________
conv2d_195 (Conv2D)             (None, 61, 61, 32)   10240       block35_9_ac[0][0]               
__________________________________________________________________________________________________
conv2d_197 (Conv2D)             (None, 61, 61, 32)   9216        activation_165[0][0]             
__________________________________________________________________________________________________
conv2d_200 (Conv2D)             (None, 61, 61, 64)   27648       activation_168[0][0]             
__________________________________________________________________________________________________
batch_normalization_164 (BatchN (None, 61, 61, 32)   96          conv2d_195[0][0]                 
__________________________________________________________________________________________________
batch_normalization_166 (BatchN (None, 61, 61, 32)   96          conv2d_197[0][0]                 
__________________________________________________________________________________________________
batch_normalization_169 (BatchN (None, 61, 61, 64)   192         conv2d_200[0][0]                 
__________________________________________________________________________________________________
activation_164 (Activation)     (None, 61, 61, 32)   0           batch_normalization_164[0][0]    
__________________________________________________________________________________________________
activation_166 (Activation)     (None, 61, 61, 32)   0           batch_normalization_166[0][0]    
__________________________________________________________________________________________________
activation_169 (Activation)     (None, 61, 61, 64)   0           batch_normalization_169[0][0]    
__________________________________________________________________________________________________
block35_10_mixed (Concatenate)  (None, 61, 61, 128)  0           activation_164[0][0]             
                                                                 activation_166[0][0]             
                                                                 activation_169[0][0]             
__________________________________________________________________________________________________
block35_10_conv (Conv2D)        (None, 61, 61, 320)  41280       block35_10_mixed[0][0]           
__________________________________________________________________________________________________
block35_10 (Lambda)             (None, 61, 61, 320)  0           block35_9_ac[0][0]               
                                                                 block35_10_conv[0][0]            
__________________________________________________________________________________________________
block35_10_ac (Activation)      (None, 61, 61, 320)  0           block35_10[0][0]                 
__________________________________________________________________________________________________
conv2d_202 (Conv2D)             (None, 61, 61, 256)  81920       block35_10_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_171 (BatchN (None, 61, 61, 256)  768         conv2d_202[0][0]                 
__________________________________________________________________________________________________
activation_171 (Activation)     (None, 61, 61, 256)  0           batch_normalization_171[0][0]    
__________________________________________________________________________________________________
conv2d_203 (Conv2D)             (None, 61, 61, 256)  589824      activation_171[0][0]             
__________________________________________________________________________________________________
batch_normalization_172 (BatchN (None, 61, 61, 256)  768         conv2d_203[0][0]                 
__________________________________________________________________________________________________
activation_172 (Activation)     (None, 61, 61, 256)  0           batch_normalization_172[0][0]    
__________________________________________________________________________________________________
conv2d_201 (Conv2D)             (None, 30, 30, 384)  1105920     block35_10_ac[0][0]              
__________________________________________________________________________________________________
conv2d_204 (Conv2D)             (None, 30, 30, 384)  884736      activation_172[0][0]             
__________________________________________________________________________________________________
batch_normalization_170 (BatchN (None, 30, 30, 384)  1152        conv2d_201[0][0]                 
__________________________________________________________________________________________________
batch_normalization_173 (BatchN (None, 30, 30, 384)  1152        conv2d_204[0][0]                 
__________________________________________________________________________________________________
activation_170 (Activation)     (None, 30, 30, 384)  0           batch_normalization_170[0][0]    
__________________________________________________________________________________________________
activation_173 (Activation)     (None, 30, 30, 384)  0           batch_normalization_173[0][0]    
__________________________________________________________________________________________________
max_pooling2d_16 (MaxPooling2D) (None, 30, 30, 320)  0           block35_10_ac[0][0]              
__________________________________________________________________________________________________
mixed_6a (Concatenate)          (None, 30, 30, 1088) 0           activation_170[0][0]             
                                                                 activation_173[0][0]             
                                                                 max_pooling2d_16[0][0]           
__________________________________________________________________________________________________
conv2d_206 (Conv2D)             (None, 30, 30, 128)  139264      mixed_6a[0][0]                   
__________________________________________________________________________________________________
batch_normalization_175 (BatchN (None, 30, 30, 128)  384         conv2d_206[0][0]                 
__________________________________________________________________________________________________
activation_175 (Activation)     (None, 30, 30, 128)  0           batch_normalization_175[0][0]    
__________________________________________________________________________________________________
conv2d_207 (Conv2D)             (None, 30, 30, 160)  143360      activation_175[0][0]             
__________________________________________________________________________________________________
batch_normalization_176 (BatchN (None, 30, 30, 160)  480         conv2d_207[0][0]                 
__________________________________________________________________________________________________
activation_176 (Activation)     (None, 30, 30, 160)  0           batch_normalization_176[0][0]    
__________________________________________________________________________________________________
conv2d_205 (Conv2D)             (None, 30, 30, 192)  208896      mixed_6a[0][0]                   
__________________________________________________________________________________________________
conv2d_208 (Conv2D)             (None, 30, 30, 192)  215040      activation_176[0][0]             
__________________________________________________________________________________________________
batch_normalization_174 (BatchN (None, 30, 30, 192)  576         conv2d_205[0][0]                 
__________________________________________________________________________________________________
batch_normalization_177 (BatchN (None, 30, 30, 192)  576         conv2d_208[0][0]                 
__________________________________________________________________________________________________
activation_174 (Activation)     (None, 30, 30, 192)  0           batch_normalization_174[0][0]    
__________________________________________________________________________________________________
activation_177 (Activation)     (None, 30, 30, 192)  0           batch_normalization_177[0][0]    
__________________________________________________________________________________________________
block17_1_mixed (Concatenate)   (None, 30, 30, 384)  0           activation_174[0][0]             
                                                                 activation_177[0][0]             
__________________________________________________________________________________________________
block17_1_conv (Conv2D)         (None, 30, 30, 1088) 418880      block17_1_mixed[0][0]            
__________________________________________________________________________________________________
block17_1 (Lambda)              (None, 30, 30, 1088) 0           mixed_6a[0][0]                   
                                                                 block17_1_conv[0][0]             
__________________________________________________________________________________________________
block17_1_ac (Activation)       (None, 30, 30, 1088) 0           block17_1[0][0]                  
__________________________________________________________________________________________________
conv2d_210 (Conv2D)             (None, 30, 30, 128)  139264      block17_1_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_179 (BatchN (None, 30, 30, 128)  384         conv2d_210[0][0]                 
__________________________________________________________________________________________________
activation_179 (Activation)     (None, 30, 30, 128)  0           batch_normalization_179[0][0]    
__________________________________________________________________________________________________
conv2d_211 (Conv2D)             (None, 30, 30, 160)  143360      activation_179[0][0]             
__________________________________________________________________________________________________
batch_normalization_180 (BatchN (None, 30, 30, 160)  480         conv2d_211[0][0]                 
__________________________________________________________________________________________________
activation_180 (Activation)     (None, 30, 30, 160)  0           batch_normalization_180[0][0]    
__________________________________________________________________________________________________
conv2d_209 (Conv2D)             (None, 30, 30, 192)  208896      block17_1_ac[0][0]               
__________________________________________________________________________________________________
conv2d_212 (Conv2D)             (None, 30, 30, 192)  215040      activation_180[0][0]             
__________________________________________________________________________________________________
batch_normalization_178 (BatchN (None, 30, 30, 192)  576         conv2d_209[0][0]                 
__________________________________________________________________________________________________
batch_normalization_181 (BatchN (None, 30, 30, 192)  576         conv2d_212[0][0]                 
__________________________________________________________________________________________________
activation_178 (Activation)     (None, 30, 30, 192)  0           batch_normalization_178[0][0]    
__________________________________________________________________________________________________
activation_181 (Activation)     (None, 30, 30, 192)  0           batch_normalization_181[0][0]    
__________________________________________________________________________________________________
block17_2_mixed (Concatenate)   (None, 30, 30, 384)  0           activation_178[0][0]             
                                                                 activation_181[0][0]             
__________________________________________________________________________________________________
block17_2_conv (Conv2D)         (None, 30, 30, 1088) 418880      block17_2_mixed[0][0]            
__________________________________________________________________________________________________
block17_2 (Lambda)              (None, 30, 30, 1088) 0           block17_1_ac[0][0]               
                                                                 block17_2_conv[0][0]             
__________________________________________________________________________________________________
block17_2_ac (Activation)       (None, 30, 30, 1088) 0           block17_2[0][0]                  
__________________________________________________________________________________________________
conv2d_214 (Conv2D)             (None, 30, 30, 128)  139264      block17_2_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_183 (BatchN (None, 30, 30, 128)  384         conv2d_214[0][0]                 
__________________________________________________________________________________________________
activation_183 (Activation)     (None, 30, 30, 128)  0           batch_normalization_183[0][0]    
__________________________________________________________________________________________________
conv2d_215 (Conv2D)             (None, 30, 30, 160)  143360      activation_183[0][0]             
__________________________________________________________________________________________________
batch_normalization_184 (BatchN (None, 30, 30, 160)  480         conv2d_215[0][0]                 
__________________________________________________________________________________________________
activation_184 (Activation)     (None, 30, 30, 160)  0           batch_normalization_184[0][0]    
__________________________________________________________________________________________________
conv2d_213 (Conv2D)             (None, 30, 30, 192)  208896      block17_2_ac[0][0]               
__________________________________________________________________________________________________
conv2d_216 (Conv2D)             (None, 30, 30, 192)  215040      activation_184[0][0]             
__________________________________________________________________________________________________
batch_normalization_182 (BatchN (None, 30, 30, 192)  576         conv2d_213[0][0]                 
__________________________________________________________________________________________________
batch_normalization_185 (BatchN (None, 30, 30, 192)  576         conv2d_216[0][0]                 
__________________________________________________________________________________________________
activation_182 (Activation)     (None, 30, 30, 192)  0           batch_normalization_182[0][0]    
__________________________________________________________________________________________________
activation_185 (Activation)     (None, 30, 30, 192)  0           batch_normalization_185[0][0]    
__________________________________________________________________________________________________
block17_3_mixed (Concatenate)   (None, 30, 30, 384)  0           activation_182[0][0]             
                                                                 activation_185[0][0]             
__________________________________________________________________________________________________
block17_3_conv (Conv2D)         (None, 30, 30, 1088) 418880      block17_3_mixed[0][0]            
__________________________________________________________________________________________________
block17_3 (Lambda)              (None, 30, 30, 1088) 0           block17_2_ac[0][0]               
                                                                 block17_3_conv[0][0]             
__________________________________________________________________________________________________
block17_3_ac (Activation)       (None, 30, 30, 1088) 0           block17_3[0][0]                  
__________________________________________________________________________________________________
conv2d_218 (Conv2D)             (None, 30, 30, 128)  139264      block17_3_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_187 (BatchN (None, 30, 30, 128)  384         conv2d_218[0][0]                 
__________________________________________________________________________________________________
activation_187 (Activation)     (None, 30, 30, 128)  0           batch_normalization_187[0][0]    
__________________________________________________________________________________________________
conv2d_219 (Conv2D)             (None, 30, 30, 160)  143360      activation_187[0][0]             
__________________________________________________________________________________________________
batch_normalization_188 (BatchN (None, 30, 30, 160)  480         conv2d_219[0][0]                 
__________________________________________________________________________________________________
activation_188 (Activation)     (None, 30, 30, 160)  0           batch_normalization_188[0][0]    
__________________________________________________________________________________________________
conv2d_217 (Conv2D)             (None, 30, 30, 192)  208896      block17_3_ac[0][0]               
__________________________________________________________________________________________________
conv2d_220 (Conv2D)             (None, 30, 30, 192)  215040      activation_188[0][0]             
__________________________________________________________________________________________________
batch_normalization_186 (BatchN (None, 30, 30, 192)  576         conv2d_217[0][0]                 
__________________________________________________________________________________________________
batch_normalization_189 (BatchN (None, 30, 30, 192)  576         conv2d_220[0][0]                 
__________________________________________________________________________________________________
activation_186 (Activation)     (None, 30, 30, 192)  0           batch_normalization_186[0][0]    
__________________________________________________________________________________________________
activation_189 (Activation)     (None, 30, 30, 192)  0           batch_normalization_189[0][0]    
__________________________________________________________________________________________________
block17_4_mixed (Concatenate)   (None, 30, 30, 384)  0           activation_186[0][0]             
                                                                 activation_189[0][0]             
__________________________________________________________________________________________________
block17_4_conv (Conv2D)         (None, 30, 30, 1088) 418880      block17_4_mixed[0][0]            
__________________________________________________________________________________________________
block17_4 (Lambda)              (None, 30, 30, 1088) 0           block17_3_ac[0][0]               
                                                                 block17_4_conv[0][0]             
__________________________________________________________________________________________________
block17_4_ac (Activation)       (None, 30, 30, 1088) 0           block17_4[0][0]                  
__________________________________________________________________________________________________
conv2d_222 (Conv2D)             (None, 30, 30, 128)  139264      block17_4_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_191 (BatchN (None, 30, 30, 128)  384         conv2d_222[0][0]                 
__________________________________________________________________________________________________
activation_191 (Activation)     (None, 30, 30, 128)  0           batch_normalization_191[0][0]    
__________________________________________________________________________________________________
conv2d_223 (Conv2D)             (None, 30, 30, 160)  143360      activation_191[0][0]             
__________________________________________________________________________________________________
batch_normalization_192 (BatchN (None, 30, 30, 160)  480         conv2d_223[0][0]                 
__________________________________________________________________________________________________
activation_192 (Activation)     (None, 30, 30, 160)  0           batch_normalization_192[0][0]    
__________________________________________________________________________________________________
conv2d_221 (Conv2D)             (None, 30, 30, 192)  208896      block17_4_ac[0][0]               
__________________________________________________________________________________________________
conv2d_224 (Conv2D)             (None, 30, 30, 192)  215040      activation_192[0][0]             
__________________________________________________________________________________________________
batch_normalization_190 (BatchN (None, 30, 30, 192)  576         conv2d_221[0][0]                 
__________________________________________________________________________________________________
batch_normalization_193 (BatchN (None, 30, 30, 192)  576         conv2d_224[0][0]                 
__________________________________________________________________________________________________
activation_190 (Activation)     (None, 30, 30, 192)  0           batch_normalization_190[0][0]    
__________________________________________________________________________________________________
activation_193 (Activation)     (None, 30, 30, 192)  0           batch_normalization_193[0][0]    
__________________________________________________________________________________________________
block17_5_mixed (Concatenate)   (None, 30, 30, 384)  0           activation_190[0][0]             
                                                                 activation_193[0][0]             
__________________________________________________________________________________________________
block17_5_conv (Conv2D)         (None, 30, 30, 1088) 418880      block17_5_mixed[0][0]            
__________________________________________________________________________________________________
block17_5 (Lambda)              (None, 30, 30, 1088) 0           block17_4_ac[0][0]               
                                                                 block17_5_conv[0][0]             
__________________________________________________________________________________________________
block17_5_ac (Activation)       (None, 30, 30, 1088) 0           block17_5[0][0]                  
__________________________________________________________________________________________________
conv2d_226 (Conv2D)             (None, 30, 30, 128)  139264      block17_5_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_195 (BatchN (None, 30, 30, 128)  384         conv2d_226[0][0]                 
__________________________________________________________________________________________________
activation_195 (Activation)     (None, 30, 30, 128)  0           batch_normalization_195[0][0]    
__________________________________________________________________________________________________
conv2d_227 (Conv2D)             (None, 30, 30, 160)  143360      activation_195[0][0]             
__________________________________________________________________________________________________
batch_normalization_196 (BatchN (None, 30, 30, 160)  480         conv2d_227[0][0]                 
__________________________________________________________________________________________________
activation_196 (Activation)     (None, 30, 30, 160)  0           batch_normalization_196[0][0]    
__________________________________________________________________________________________________
conv2d_225 (Conv2D)             (None, 30, 30, 192)  208896      block17_5_ac[0][0]               
__________________________________________________________________________________________________
conv2d_228 (Conv2D)             (None, 30, 30, 192)  215040      activation_196[0][0]             
__________________________________________________________________________________________________
batch_normalization_194 (BatchN (None, 30, 30, 192)  576         conv2d_225[0][0]                 
__________________________________________________________________________________________________
batch_normalization_197 (BatchN (None, 30, 30, 192)  576         conv2d_228[0][0]                 
__________________________________________________________________________________________________
activation_194 (Activation)     (None, 30, 30, 192)  0           batch_normalization_194[0][0]    
__________________________________________________________________________________________________
activation_197 (Activation)     (None, 30, 30, 192)  0           batch_normalization_197[0][0]    
__________________________________________________________________________________________________
block17_6_mixed (Concatenate)   (None, 30, 30, 384)  0           activation_194[0][0]             
                                                                 activation_197[0][0]             
__________________________________________________________________________________________________
block17_6_conv (Conv2D)         (None, 30, 30, 1088) 418880      block17_6_mixed[0][0]            
__________________________________________________________________________________________________
block17_6 (Lambda)              (None, 30, 30, 1088) 0           block17_5_ac[0][0]               
                                                                 block17_6_conv[0][0]             
__________________________________________________________________________________________________
block17_6_ac (Activation)       (None, 30, 30, 1088) 0           block17_6[0][0]                  
__________________________________________________________________________________________________
conv2d_230 (Conv2D)             (None, 30, 30, 128)  139264      block17_6_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_199 (BatchN (None, 30, 30, 128)  384         conv2d_230[0][0]                 
__________________________________________________________________________________________________
activation_199 (Activation)     (None, 30, 30, 128)  0           batch_normalization_199[0][0]    
__________________________________________________________________________________________________
conv2d_231 (Conv2D)             (None, 30, 30, 160)  143360      activation_199[0][0]             
__________________________________________________________________________________________________
batch_normalization_200 (BatchN (None, 30, 30, 160)  480         conv2d_231[0][0]                 
__________________________________________________________________________________________________
activation_200 (Activation)     (None, 30, 30, 160)  0           batch_normalization_200[0][0]    
__________________________________________________________________________________________________
conv2d_229 (Conv2D)             (None, 30, 30, 192)  208896      block17_6_ac[0][0]               
__________________________________________________________________________________________________
conv2d_232 (Conv2D)             (None, 30, 30, 192)  215040      activation_200[0][0]             
__________________________________________________________________________________________________
batch_normalization_198 (BatchN (None, 30, 30, 192)  576         conv2d_229[0][0]                 
__________________________________________________________________________________________________
batch_normalization_201 (BatchN (None, 30, 30, 192)  576         conv2d_232[0][0]                 
__________________________________________________________________________________________________
activation_198 (Activation)     (None, 30, 30, 192)  0           batch_normalization_198[0][0]    
__________________________________________________________________________________________________
activation_201 (Activation)     (None, 30, 30, 192)  0           batch_normalization_201[0][0]    
__________________________________________________________________________________________________
block17_7_mixed (Concatenate)   (None, 30, 30, 384)  0           activation_198[0][0]             
                                                                 activation_201[0][0]             
__________________________________________________________________________________________________
block17_7_conv (Conv2D)         (None, 30, 30, 1088) 418880      block17_7_mixed[0][0]            
__________________________________________________________________________________________________
block17_7 (Lambda)              (None, 30, 30, 1088) 0           block17_6_ac[0][0]               
                                                                 block17_7_conv[0][0]             
__________________________________________________________________________________________________
block17_7_ac (Activation)       (None, 30, 30, 1088) 0           block17_7[0][0]                  
__________________________________________________________________________________________________
conv2d_234 (Conv2D)             (None, 30, 30, 128)  139264      block17_7_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_203 (BatchN (None, 30, 30, 128)  384         conv2d_234[0][0]                 
__________________________________________________________________________________________________
activation_203 (Activation)     (None, 30, 30, 128)  0           batch_normalization_203[0][0]    
__________________________________________________________________________________________________
conv2d_235 (Conv2D)             (None, 30, 30, 160)  143360      activation_203[0][0]             
__________________________________________________________________________________________________
batch_normalization_204 (BatchN (None, 30, 30, 160)  480         conv2d_235[0][0]                 
__________________________________________________________________________________________________
activation_204 (Activation)     (None, 30, 30, 160)  0           batch_normalization_204[0][0]    
__________________________________________________________________________________________________
conv2d_233 (Conv2D)             (None, 30, 30, 192)  208896      block17_7_ac[0][0]               
__________________________________________________________________________________________________
conv2d_236 (Conv2D)             (None, 30, 30, 192)  215040      activation_204[0][0]             
__________________________________________________________________________________________________
batch_normalization_202 (BatchN (None, 30, 30, 192)  576         conv2d_233[0][0]                 
__________________________________________________________________________________________________
batch_normalization_205 (BatchN (None, 30, 30, 192)  576         conv2d_236[0][0]                 
__________________________________________________________________________________________________
activation_202 (Activation)     (None, 30, 30, 192)  0           batch_normalization_202[0][0]    
__________________________________________________________________________________________________
activation_205 (Activation)     (None, 30, 30, 192)  0           batch_normalization_205[0][0]    
__________________________________________________________________________________________________
block17_8_mixed (Concatenate)   (None, 30, 30, 384)  0           activation_202[0][0]             
                                                                 activation_205[0][0]             
__________________________________________________________________________________________________
block17_8_conv (Conv2D)         (None, 30, 30, 1088) 418880      block17_8_mixed[0][0]            
__________________________________________________________________________________________________
block17_8 (Lambda)              (None, 30, 30, 1088) 0           block17_7_ac[0][0]               
                                                                 block17_8_conv[0][0]             
__________________________________________________________________________________________________
block17_8_ac (Activation)       (None, 30, 30, 1088) 0           block17_8[0][0]                  
__________________________________________________________________________________________________
conv2d_238 (Conv2D)             (None, 30, 30, 128)  139264      block17_8_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_207 (BatchN (None, 30, 30, 128)  384         conv2d_238[0][0]                 
__________________________________________________________________________________________________
activation_207 (Activation)     (None, 30, 30, 128)  0           batch_normalization_207[0][0]    
__________________________________________________________________________________________________
conv2d_239 (Conv2D)             (None, 30, 30, 160)  143360      activation_207[0][0]             
__________________________________________________________________________________________________
batch_normalization_208 (BatchN (None, 30, 30, 160)  480         conv2d_239[0][0]                 
__________________________________________________________________________________________________
activation_208 (Activation)     (None, 30, 30, 160)  0           batch_normalization_208[0][0]    
__________________________________________________________________________________________________
conv2d_237 (Conv2D)             (None, 30, 30, 192)  208896      block17_8_ac[0][0]               
__________________________________________________________________________________________________
conv2d_240 (Conv2D)             (None, 30, 30, 192)  215040      activation_208[0][0]             
__________________________________________________________________________________________________
batch_normalization_206 (BatchN (None, 30, 30, 192)  576         conv2d_237[0][0]                 
__________________________________________________________________________________________________
batch_normalization_209 (BatchN (None, 30, 30, 192)  576         conv2d_240[0][0]                 
__________________________________________________________________________________________________
activation_206 (Activation)     (None, 30, 30, 192)  0           batch_normalization_206[0][0]    
__________________________________________________________________________________________________
activation_209 (Activation)     (None, 30, 30, 192)  0           batch_normalization_209[0][0]    
__________________________________________________________________________________________________
block17_9_mixed (Concatenate)   (None, 30, 30, 384)  0           activation_206[0][0]             
                                                                 activation_209[0][0]             
__________________________________________________________________________________________________
block17_9_conv (Conv2D)         (None, 30, 30, 1088) 418880      block17_9_mixed[0][0]            
__________________________________________________________________________________________________
block17_9 (Lambda)              (None, 30, 30, 1088) 0           block17_8_ac[0][0]               
                                                                 block17_9_conv[0][0]             
__________________________________________________________________________________________________
block17_9_ac (Activation)       (None, 30, 30, 1088) 0           block17_9[0][0]                  
__________________________________________________________________________________________________
conv2d_242 (Conv2D)             (None, 30, 30, 128)  139264      block17_9_ac[0][0]               
__________________________________________________________________________________________________
batch_normalization_211 (BatchN (None, 30, 30, 128)  384         conv2d_242[0][0]                 
__________________________________________________________________________________________________
activation_211 (Activation)     (None, 30, 30, 128)  0           batch_normalization_211[0][0]    
__________________________________________________________________________________________________
conv2d_243 (Conv2D)             (None, 30, 30, 160)  143360      activation_211[0][0]             
__________________________________________________________________________________________________
batch_normalization_212 (BatchN (None, 30, 30, 160)  480         conv2d_243[0][0]                 
__________________________________________________________________________________________________
activation_212 (Activation)     (None, 30, 30, 160)  0           batch_normalization_212[0][0]    
__________________________________________________________________________________________________
conv2d_241 (Conv2D)             (None, 30, 30, 192)  208896      block17_9_ac[0][0]               
__________________________________________________________________________________________________
conv2d_244 (Conv2D)             (None, 30, 30, 192)  215040      activation_212[0][0]             
__________________________________________________________________________________________________
batch_normalization_210 (BatchN (None, 30, 30, 192)  576         conv2d_241[0][0]                 
__________________________________________________________________________________________________
batch_normalization_213 (BatchN (None, 30, 30, 192)  576         conv2d_244[0][0]                 
__________________________________________________________________________________________________
activation_210 (Activation)     (None, 30, 30, 192)  0           batch_normalization_210[0][0]    
__________________________________________________________________________________________________
activation_213 (Activation)     (None, 30, 30, 192)  0           batch_normalization_213[0][0]    
__________________________________________________________________________________________________
block17_10_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_210[0][0]             
                                                                 activation_213[0][0]             
__________________________________________________________________________________________________
block17_10_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_10_mixed[0][0]           
__________________________________________________________________________________________________
block17_10 (Lambda)             (None, 30, 30, 1088) 0           block17_9_ac[0][0]               
                                                                 block17_10_conv[0][0]            
__________________________________________________________________________________________________
block17_10_ac (Activation)      (None, 30, 30, 1088) 0           block17_10[0][0]                 
__________________________________________________________________________________________________
conv2d_246 (Conv2D)             (None, 30, 30, 128)  139264      block17_10_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_215 (BatchN (None, 30, 30, 128)  384         conv2d_246[0][0]                 
__________________________________________________________________________________________________
activation_215 (Activation)     (None, 30, 30, 128)  0           batch_normalization_215[0][0]    
__________________________________________________________________________________________________
conv2d_247 (Conv2D)             (None, 30, 30, 160)  143360      activation_215[0][0]             
__________________________________________________________________________________________________
batch_normalization_216 (BatchN (None, 30, 30, 160)  480         conv2d_247[0][0]                 
__________________________________________________________________________________________________
activation_216 (Activation)     (None, 30, 30, 160)  0           batch_normalization_216[0][0]    
__________________________________________________________________________________________________
conv2d_245 (Conv2D)             (None, 30, 30, 192)  208896      block17_10_ac[0][0]              
__________________________________________________________________________________________________
conv2d_248 (Conv2D)             (None, 30, 30, 192)  215040      activation_216[0][0]             
__________________________________________________________________________________________________
batch_normalization_214 (BatchN (None, 30, 30, 192)  576         conv2d_245[0][0]                 
__________________________________________________________________________________________________
batch_normalization_217 (BatchN (None, 30, 30, 192)  576         conv2d_248[0][0]                 
__________________________________________________________________________________________________
activation_214 (Activation)     (None, 30, 30, 192)  0           batch_normalization_214[0][0]    
__________________________________________________________________________________________________
activation_217 (Activation)     (None, 30, 30, 192)  0           batch_normalization_217[0][0]    
__________________________________________________________________________________________________
block17_11_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_214[0][0]             
                                                                 activation_217[0][0]             
__________________________________________________________________________________________________
block17_11_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_11_mixed[0][0]           
__________________________________________________________________________________________________
block17_11 (Lambda)             (None, 30, 30, 1088) 0           block17_10_ac[0][0]              
                                                                 block17_11_conv[0][0]            
__________________________________________________________________________________________________
block17_11_ac (Activation)      (None, 30, 30, 1088) 0           block17_11[0][0]                 
__________________________________________________________________________________________________
conv2d_250 (Conv2D)             (None, 30, 30, 128)  139264      block17_11_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_219 (BatchN (None, 30, 30, 128)  384         conv2d_250[0][0]                 
__________________________________________________________________________________________________
activation_219 (Activation)     (None, 30, 30, 128)  0           batch_normalization_219[0][0]    
__________________________________________________________________________________________________
conv2d_251 (Conv2D)             (None, 30, 30, 160)  143360      activation_219[0][0]             
__________________________________________________________________________________________________
batch_normalization_220 (BatchN (None, 30, 30, 160)  480         conv2d_251[0][0]                 
__________________________________________________________________________________________________
activation_220 (Activation)     (None, 30, 30, 160)  0           batch_normalization_220[0][0]    
__________________________________________________________________________________________________
conv2d_249 (Conv2D)             (None, 30, 30, 192)  208896      block17_11_ac[0][0]              
__________________________________________________________________________________________________
conv2d_252 (Conv2D)             (None, 30, 30, 192)  215040      activation_220[0][0]             
__________________________________________________________________________________________________
batch_normalization_218 (BatchN (None, 30, 30, 192)  576         conv2d_249[0][0]                 
__________________________________________________________________________________________________
batch_normalization_221 (BatchN (None, 30, 30, 192)  576         conv2d_252[0][0]                 
__________________________________________________________________________________________________
activation_218 (Activation)     (None, 30, 30, 192)  0           batch_normalization_218[0][0]    
__________________________________________________________________________________________________
activation_221 (Activation)     (None, 30, 30, 192)  0           batch_normalization_221[0][0]    
__________________________________________________________________________________________________
block17_12_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_218[0][0]             
                                                                 activation_221[0][0]             
__________________________________________________________________________________________________
block17_12_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_12_mixed[0][0]           
__________________________________________________________________________________________________
block17_12 (Lambda)             (None, 30, 30, 1088) 0           block17_11_ac[0][0]              
                                                                 block17_12_conv[0][0]            
__________________________________________________________________________________________________
block17_12_ac (Activation)      (None, 30, 30, 1088) 0           block17_12[0][0]                 
__________________________________________________________________________________________________
conv2d_254 (Conv2D)             (None, 30, 30, 128)  139264      block17_12_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_223 (BatchN (None, 30, 30, 128)  384         conv2d_254[0][0]                 
__________________________________________________________________________________________________
activation_223 (Activation)     (None, 30, 30, 128)  0           batch_normalization_223[0][0]    
__________________________________________________________________________________________________
conv2d_255 (Conv2D)             (None, 30, 30, 160)  143360      activation_223[0][0]             
__________________________________________________________________________________________________
batch_normalization_224 (BatchN (None, 30, 30, 160)  480         conv2d_255[0][0]                 
__________________________________________________________________________________________________
activation_224 (Activation)     (None, 30, 30, 160)  0           batch_normalization_224[0][0]    
__________________________________________________________________________________________________
conv2d_253 (Conv2D)             (None, 30, 30, 192)  208896      block17_12_ac[0][0]              
__________________________________________________________________________________________________
conv2d_256 (Conv2D)             (None, 30, 30, 192)  215040      activation_224[0][0]             
__________________________________________________________________________________________________
batch_normalization_222 (BatchN (None, 30, 30, 192)  576         conv2d_253[0][0]                 
__________________________________________________________________________________________________
batch_normalization_225 (BatchN (None, 30, 30, 192)  576         conv2d_256[0][0]                 
__________________________________________________________________________________________________
activation_222 (Activation)     (None, 30, 30, 192)  0           batch_normalization_222[0][0]    
__________________________________________________________________________________________________
activation_225 (Activation)     (None, 30, 30, 192)  0           batch_normalization_225[0][0]    
__________________________________________________________________________________________________
block17_13_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_222[0][0]             
                                                                 activation_225[0][0]             
__________________________________________________________________________________________________
block17_13_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_13_mixed[0][0]           
__________________________________________________________________________________________________
block17_13 (Lambda)             (None, 30, 30, 1088) 0           block17_12_ac[0][0]              
                                                                 block17_13_conv[0][0]            
__________________________________________________________________________________________________
block17_13_ac (Activation)      (None, 30, 30, 1088) 0           block17_13[0][0]                 
__________________________________________________________________________________________________
conv2d_258 (Conv2D)             (None, 30, 30, 128)  139264      block17_13_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_227 (BatchN (None, 30, 30, 128)  384         conv2d_258[0][0]                 
__________________________________________________________________________________________________
activation_227 (Activation)     (None, 30, 30, 128)  0           batch_normalization_227[0][0]    
__________________________________________________________________________________________________
conv2d_259 (Conv2D)             (None, 30, 30, 160)  143360      activation_227[0][0]             
__________________________________________________________________________________________________
batch_normalization_228 (BatchN (None, 30, 30, 160)  480         conv2d_259[0][0]                 
__________________________________________________________________________________________________
activation_228 (Activation)     (None, 30, 30, 160)  0           batch_normalization_228[0][0]    
__________________________________________________________________________________________________
conv2d_257 (Conv2D)             (None, 30, 30, 192)  208896      block17_13_ac[0][0]              
__________________________________________________________________________________________________
conv2d_260 (Conv2D)             (None, 30, 30, 192)  215040      activation_228[0][0]             
__________________________________________________________________________________________________
batch_normalization_226 (BatchN (None, 30, 30, 192)  576         conv2d_257[0][0]                 
__________________________________________________________________________________________________
batch_normalization_229 (BatchN (None, 30, 30, 192)  576         conv2d_260[0][0]                 
__________________________________________________________________________________________________
activation_226 (Activation)     (None, 30, 30, 192)  0           batch_normalization_226[0][0]    
__________________________________________________________________________________________________
activation_229 (Activation)     (None, 30, 30, 192)  0           batch_normalization_229[0][0]    
__________________________________________________________________________________________________
block17_14_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_226[0][0]             
                                                                 activation_229[0][0]             
__________________________________________________________________________________________________
block17_14_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_14_mixed[0][0]           
__________________________________________________________________________________________________
block17_14 (Lambda)             (None, 30, 30, 1088) 0           block17_13_ac[0][0]              
                                                                 block17_14_conv[0][0]            
__________________________________________________________________________________________________
block17_14_ac (Activation)      (None, 30, 30, 1088) 0           block17_14[0][0]                 
__________________________________________________________________________________________________
conv2d_262 (Conv2D)             (None, 30, 30, 128)  139264      block17_14_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_231 (BatchN (None, 30, 30, 128)  384         conv2d_262[0][0]                 
__________________________________________________________________________________________________
activation_231 (Activation)     (None, 30, 30, 128)  0           batch_normalization_231[0][0]    
__________________________________________________________________________________________________
conv2d_263 (Conv2D)             (None, 30, 30, 160)  143360      activation_231[0][0]             
__________________________________________________________________________________________________
batch_normalization_232 (BatchN (None, 30, 30, 160)  480         conv2d_263[0][0]                 
__________________________________________________________________________________________________
activation_232 (Activation)     (None, 30, 30, 160)  0           batch_normalization_232[0][0]    
__________________________________________________________________________________________________
conv2d_261 (Conv2D)             (None, 30, 30, 192)  208896      block17_14_ac[0][0]              
__________________________________________________________________________________________________
conv2d_264 (Conv2D)             (None, 30, 30, 192)  215040      activation_232[0][0]             
__________________________________________________________________________________________________
batch_normalization_230 (BatchN (None, 30, 30, 192)  576         conv2d_261[0][0]                 
__________________________________________________________________________________________________
batch_normalization_233 (BatchN (None, 30, 30, 192)  576         conv2d_264[0][0]                 
__________________________________________________________________________________________________
activation_230 (Activation)     (None, 30, 30, 192)  0           batch_normalization_230[0][0]    
__________________________________________________________________________________________________
activation_233 (Activation)     (None, 30, 30, 192)  0           batch_normalization_233[0][0]    
__________________________________________________________________________________________________
block17_15_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_230[0][0]             
                                                                 activation_233[0][0]             
__________________________________________________________________________________________________
block17_15_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_15_mixed[0][0]           
__________________________________________________________________________________________________
block17_15 (Lambda)             (None, 30, 30, 1088) 0           block17_14_ac[0][0]              
                                                                 block17_15_conv[0][0]            
__________________________________________________________________________________________________
block17_15_ac (Activation)      (None, 30, 30, 1088) 0           block17_15[0][0]                 
__________________________________________________________________________________________________
conv2d_266 (Conv2D)             (None, 30, 30, 128)  139264      block17_15_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_235 (BatchN (None, 30, 30, 128)  384         conv2d_266[0][0]                 
__________________________________________________________________________________________________
activation_235 (Activation)     (None, 30, 30, 128)  0           batch_normalization_235[0][0]    
__________________________________________________________________________________________________
conv2d_267 (Conv2D)             (None, 30, 30, 160)  143360      activation_235[0][0]             
__________________________________________________________________________________________________
batch_normalization_236 (BatchN (None, 30, 30, 160)  480         conv2d_267[0][0]                 
__________________________________________________________________________________________________
activation_236 (Activation)     (None, 30, 30, 160)  0           batch_normalization_236[0][0]    
__________________________________________________________________________________________________
conv2d_265 (Conv2D)             (None, 30, 30, 192)  208896      block17_15_ac[0][0]              
__________________________________________________________________________________________________
conv2d_268 (Conv2D)             (None, 30, 30, 192)  215040      activation_236[0][0]             
__________________________________________________________________________________________________
batch_normalization_234 (BatchN (None, 30, 30, 192)  576         conv2d_265[0][0]                 
__________________________________________________________________________________________________
batch_normalization_237 (BatchN (None, 30, 30, 192)  576         conv2d_268[0][0]                 
__________________________________________________________________________________________________
activation_234 (Activation)     (None, 30, 30, 192)  0           batch_normalization_234[0][0]    
__________________________________________________________________________________________________
activation_237 (Activation)     (None, 30, 30, 192)  0           batch_normalization_237[0][0]    
__________________________________________________________________________________________________
block17_16_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_234[0][0]             
                                                                 activation_237[0][0]             
__________________________________________________________________________________________________
block17_16_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_16_mixed[0][0]           
__________________________________________________________________________________________________
block17_16 (Lambda)             (None, 30, 30, 1088) 0           block17_15_ac[0][0]              
                                                                 block17_16_conv[0][0]            
__________________________________________________________________________________________________
block17_16_ac (Activation)      (None, 30, 30, 1088) 0           block17_16[0][0]                 
__________________________________________________________________________________________________
conv2d_270 (Conv2D)             (None, 30, 30, 128)  139264      block17_16_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_239 (BatchN (None, 30, 30, 128)  384         conv2d_270[0][0]                 
__________________________________________________________________________________________________
activation_239 (Activation)     (None, 30, 30, 128)  0           batch_normalization_239[0][0]    
__________________________________________________________________________________________________
conv2d_271 (Conv2D)             (None, 30, 30, 160)  143360      activation_239[0][0]             
__________________________________________________________________________________________________
batch_normalization_240 (BatchN (None, 30, 30, 160)  480         conv2d_271[0][0]                 
__________________________________________________________________________________________________
activation_240 (Activation)     (None, 30, 30, 160)  0           batch_normalization_240[0][0]    
__________________________________________________________________________________________________
conv2d_269 (Conv2D)             (None, 30, 30, 192)  208896      block17_16_ac[0][0]              
__________________________________________________________________________________________________
conv2d_272 (Conv2D)             (None, 30, 30, 192)  215040      activation_240[0][0]             
__________________________________________________________________________________________________
batch_normalization_238 (BatchN (None, 30, 30, 192)  576         conv2d_269[0][0]                 
__________________________________________________________________________________________________
batch_normalization_241 (BatchN (None, 30, 30, 192)  576         conv2d_272[0][0]                 
__________________________________________________________________________________________________
activation_238 (Activation)     (None, 30, 30, 192)  0           batch_normalization_238[0][0]    
__________________________________________________________________________________________________
activation_241 (Activation)     (None, 30, 30, 192)  0           batch_normalization_241[0][0]    
__________________________________________________________________________________________________
block17_17_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_238[0][0]             
                                                                 activation_241[0][0]             
__________________________________________________________________________________________________
block17_17_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_17_mixed[0][0]           
__________________________________________________________________________________________________
block17_17 (Lambda)             (None, 30, 30, 1088) 0           block17_16_ac[0][0]              
                                                                 block17_17_conv[0][0]            
__________________________________________________________________________________________________
block17_17_ac (Activation)      (None, 30, 30, 1088) 0           block17_17[0][0]                 
__________________________________________________________________________________________________
conv2d_274 (Conv2D)             (None, 30, 30, 128)  139264      block17_17_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_243 (BatchN (None, 30, 30, 128)  384         conv2d_274[0][0]                 
__________________________________________________________________________________________________
activation_243 (Activation)     (None, 30, 30, 128)  0           batch_normalization_243[0][0]    
__________________________________________________________________________________________________
conv2d_275 (Conv2D)             (None, 30, 30, 160)  143360      activation_243[0][0]             
__________________________________________________________________________________________________
batch_normalization_244 (BatchN (None, 30, 30, 160)  480         conv2d_275[0][0]                 
__________________________________________________________________________________________________
activation_244 (Activation)     (None, 30, 30, 160)  0           batch_normalization_244[0][0]    
__________________________________________________________________________________________________
conv2d_273 (Conv2D)             (None, 30, 30, 192)  208896      block17_17_ac[0][0]              
__________________________________________________________________________________________________
conv2d_276 (Conv2D)             (None, 30, 30, 192)  215040      activation_244[0][0]             
__________________________________________________________________________________________________
batch_normalization_242 (BatchN (None, 30, 30, 192)  576         conv2d_273[0][0]                 
__________________________________________________________________________________________________
batch_normalization_245 (BatchN (None, 30, 30, 192)  576         conv2d_276[0][0]                 
__________________________________________________________________________________________________
activation_242 (Activation)     (None, 30, 30, 192)  0           batch_normalization_242[0][0]    
__________________________________________________________________________________________________
activation_245 (Activation)     (None, 30, 30, 192)  0           batch_normalization_245[0][0]    
__________________________________________________________________________________________________
block17_18_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_242[0][0]             
                                                                 activation_245[0][0]             
__________________________________________________________________________________________________
block17_18_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_18_mixed[0][0]           
__________________________________________________________________________________________________
block17_18 (Lambda)             (None, 30, 30, 1088) 0           block17_17_ac[0][0]              
                                                                 block17_18_conv[0][0]            
__________________________________________________________________________________________________
block17_18_ac (Activation)      (None, 30, 30, 1088) 0           block17_18[0][0]                 
__________________________________________________________________________________________________
conv2d_278 (Conv2D)             (None, 30, 30, 128)  139264      block17_18_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_247 (BatchN (None, 30, 30, 128)  384         conv2d_278[0][0]                 
__________________________________________________________________________________________________
activation_247 (Activation)     (None, 30, 30, 128)  0           batch_normalization_247[0][0]    
__________________________________________________________________________________________________
conv2d_279 (Conv2D)             (None, 30, 30, 160)  143360      activation_247[0][0]             
__________________________________________________________________________________________________
batch_normalization_248 (BatchN (None, 30, 30, 160)  480         conv2d_279[0][0]                 
__________________________________________________________________________________________________
activation_248 (Activation)     (None, 30, 30, 160)  0           batch_normalization_248[0][0]    
__________________________________________________________________________________________________
conv2d_277 (Conv2D)             (None, 30, 30, 192)  208896      block17_18_ac[0][0]              
__________________________________________________________________________________________________
conv2d_280 (Conv2D)             (None, 30, 30, 192)  215040      activation_248[0][0]             
__________________________________________________________________________________________________
batch_normalization_246 (BatchN (None, 30, 30, 192)  576         conv2d_277[0][0]                 
__________________________________________________________________________________________________
batch_normalization_249 (BatchN (None, 30, 30, 192)  576         conv2d_280[0][0]                 
__________________________________________________________________________________________________
activation_246 (Activation)     (None, 30, 30, 192)  0           batch_normalization_246[0][0]    
__________________________________________________________________________________________________
activation_249 (Activation)     (None, 30, 30, 192)  0           batch_normalization_249[0][0]    
__________________________________________________________________________________________________
block17_19_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_246[0][0]             
                                                                 activation_249[0][0]             
__________________________________________________________________________________________________
block17_19_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_19_mixed[0][0]           
__________________________________________________________________________________________________
block17_19 (Lambda)             (None, 30, 30, 1088) 0           block17_18_ac[0][0]              
                                                                 block17_19_conv[0][0]            
__________________________________________________________________________________________________
block17_19_ac (Activation)      (None, 30, 30, 1088) 0           block17_19[0][0]                 
__________________________________________________________________________________________________
conv2d_282 (Conv2D)             (None, 30, 30, 128)  139264      block17_19_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_251 (BatchN (None, 30, 30, 128)  384         conv2d_282[0][0]                 
__________________________________________________________________________________________________
activation_251 (Activation)     (None, 30, 30, 128)  0           batch_normalization_251[0][0]    
__________________________________________________________________________________________________
conv2d_283 (Conv2D)             (None, 30, 30, 160)  143360      activation_251[0][0]             
__________________________________________________________________________________________________
batch_normalization_252 (BatchN (None, 30, 30, 160)  480         conv2d_283[0][0]                 
__________________________________________________________________________________________________
activation_252 (Activation)     (None, 30, 30, 160)  0           batch_normalization_252[0][0]    
__________________________________________________________________________________________________
conv2d_281 (Conv2D)             (None, 30, 30, 192)  208896      block17_19_ac[0][0]              
__________________________________________________________________________________________________
conv2d_284 (Conv2D)             (None, 30, 30, 192)  215040      activation_252[0][0]             
__________________________________________________________________________________________________
batch_normalization_250 (BatchN (None, 30, 30, 192)  576         conv2d_281[0][0]                 
__________________________________________________________________________________________________
batch_normalization_253 (BatchN (None, 30, 30, 192)  576         conv2d_284[0][0]                 
__________________________________________________________________________________________________
activation_250 (Activation)     (None, 30, 30, 192)  0           batch_normalization_250[0][0]    
__________________________________________________________________________________________________
activation_253 (Activation)     (None, 30, 30, 192)  0           batch_normalization_253[0][0]    
__________________________________________________________________________________________________
block17_20_mixed (Concatenate)  (None, 30, 30, 384)  0           activation_250[0][0]             
                                                                 activation_253[0][0]             
__________________________________________________________________________________________________
block17_20_conv (Conv2D)        (None, 30, 30, 1088) 418880      block17_20_mixed[0][0]           
__________________________________________________________________________________________________
block17_20 (Lambda)             (None, 30, 30, 1088) 0           block17_19_ac[0][0]              
                                                                 block17_20_conv[0][0]            
__________________________________________________________________________________________________
block17_20_ac (Activation)      (None, 30, 30, 1088) 0           block17_20[0][0]                 
__________________________________________________________________________________________________
conv2d_289 (Conv2D)             (None, 30, 30, 256)  278528      block17_20_ac[0][0]              
__________________________________________________________________________________________________
batch_normalization_258 (BatchN (None, 30, 30, 256)  768         conv2d_289[0][0]                 
__________________________________________________________________________________________________
activation_258 (Activation)     (None, 30, 30, 256)  0           batch_normalization_258[0][0]    
__________________________________________________________________________________________________
conv2d_285 (Conv2D)             (None, 30, 30, 256)  278528      block17_20_ac[0][0]              
__________________________________________________________________________________________________
conv2d_287 (Conv2D)             (None, 30, 30, 256)  278528      block17_20_ac[0][0]              
__________________________________________________________________________________________________
conv2d_290 (Conv2D)             (None, 30, 30, 288)  663552      activation_258[0][0]             
__________________________________________________________________________________________________
batch_normalization_254 (BatchN (None, 30, 30, 256)  768         conv2d_285[0][0]                 
__________________________________________________________________________________________________
batch_normalization_256 (BatchN (None, 30, 30, 256)  768         conv2d_287[0][0]                 
__________________________________________________________________________________________________
batch_normalization_259 (BatchN (None, 30, 30, 288)  864         conv2d_290[0][0]                 
__________________________________________________________________________________________________
activation_254 (Activation)     (None, 30, 30, 256)  0           batch_normalization_254[0][0]    
__________________________________________________________________________________________________
activation_256 (Activation)     (None, 30, 30, 256)  0           batch_normalization_256[0][0]    
__________________________________________________________________________________________________
activation_259 (Activation)     (None, 30, 30, 288)  0           batch_normalization_259[0][0]    
__________________________________________________________________________________________________
conv2d_286 (Conv2D)             (None, 14, 14, 384)  884736      activation_254[0][0]             
__________________________________________________________________________________________________
conv2d_288 (Conv2D)             (None, 14, 14, 288)  663552      activation_256[0][0]             
__________________________________________________________________________________________________
conv2d_291 (Conv2D)             (None, 14, 14, 320)  829440      activation_259[0][0]             
__________________________________________________________________________________________________
batch_normalization_255 (BatchN (None, 14, 14, 384)  1152        conv2d_286[0][0]                 
__________________________________________________________________________________________________
batch_normalization_257 (BatchN (None, 14, 14, 288)  864         conv2d_288[0][0]                 
__________________________________________________________________________________________________
batch_normalization_260 (BatchN (None, 14, 14, 320)  960         conv2d_291[0][0]                 
__________________________________________________________________________________________________
activation_255 (Activation)     (None, 14, 14, 384)  0           batch_normalization_255[0][0]    
__________________________________________________________________________________________________
activation_257 (Activation)     (None, 14, 14, 288)  0           batch_normalization_257[0][0]    
__________________________________________________________________________________________________
activation_260 (Activation)     (None, 14, 14, 320)  0           batch_normalization_260[0][0]    
__________________________________________________________________________________________________
max_pooling2d_17 (MaxPooling2D) (None, 14, 14, 1088) 0           block17_20_ac[0][0]              
__________________________________________________________________________________________________
mixed_7a (Concatenate)          (None, 14, 14, 2080) 0           activation_255[0][0]             
                                                                 activation_257[0][0]             
                                                                 activation_260[0][0]             
                                                                 max_pooling2d_17[0][0]           
__________________________________________________________________________________________________
conv2d_293 (Conv2D)             (None, 14, 14, 192)  399360      mixed_7a[0][0]                   
__________________________________________________________________________________________________
batch_normalization_262 (BatchN (None, 14, 14, 192)  576         conv2d_293[0][0]                 
__________________________________________________________________________________________________
activation_262 (Activation)     (None, 14, 14, 192)  0           batch_normalization_262[0][0]    
__________________________________________________________________________________________________
conv2d_294 (Conv2D)             (None, 14, 14, 224)  129024      activation_262[0][0]             
__________________________________________________________________________________________________
batch_normalization_263 (BatchN (None, 14, 14, 224)  672         conv2d_294[0][0]                 
__________________________________________________________________________________________________
activation_263 (Activation)     (None, 14, 14, 224)  0           batch_normalization_263[0][0]    
__________________________________________________________________________________________________
conv2d_292 (Conv2D)             (None, 14, 14, 192)  399360      mixed_7a[0][0]                   
__________________________________________________________________________________________________
conv2d_295 (Conv2D)             (None, 14, 14, 256)  172032      activation_263[0][0]             
__________________________________________________________________________________________________
batch_normalization_261 (BatchN (None, 14, 14, 192)  576         conv2d_292[0][0]                 
__________________________________________________________________________________________________
batch_normalization_264 (BatchN (None, 14, 14, 256)  768         conv2d_295[0][0]                 
__________________________________________________________________________________________________
activation_261 (Activation)     (None, 14, 14, 192)  0           batch_normalization_261[0][0]    
__________________________________________________________________________________________________
activation_264 (Activation)     (None, 14, 14, 256)  0           batch_normalization_264[0][0]    
__________________________________________________________________________________________________
block8_1_mixed (Concatenate)    (None, 14, 14, 448)  0           activation_261[0][0]             
                                                                 activation_264[0][0]             
__________________________________________________________________________________________________
block8_1_conv (Conv2D)          (None, 14, 14, 2080) 933920      block8_1_mixed[0][0]             
__________________________________________________________________________________________________
block8_1 (Lambda)               (None, 14, 14, 2080) 0           mixed_7a[0][0]                   
                                                                 block8_1_conv[0][0]              
__________________________________________________________________________________________________
block8_1_ac (Activation)        (None, 14, 14, 2080) 0           block8_1[0][0]                   
__________________________________________________________________________________________________
conv2d_297 (Conv2D)             (None, 14, 14, 192)  399360      block8_1_ac[0][0]                
__________________________________________________________________________________________________
batch_normalization_266 (BatchN (None, 14, 14, 192)  576         conv2d_297[0][0]                 
__________________________________________________________________________________________________
activation_266 (Activation)     (None, 14, 14, 192)  0           batch_normalization_266[0][0]    
__________________________________________________________________________________________________
conv2d_298 (Conv2D)             (None, 14, 14, 224)  129024      activation_266[0][0]             
__________________________________________________________________________________________________
batch_normalization_267 (BatchN (None, 14, 14, 224)  672         conv2d_298[0][0]                 
__________________________________________________________________________________________________
activation_267 (Activation)     (None, 14, 14, 224)  0           batch_normalization_267[0][0]    
__________________________________________________________________________________________________
conv2d_296 (Conv2D)             (None, 14, 14, 192)  399360      block8_1_ac[0][0]                
__________________________________________________________________________________________________
conv2d_299 (Conv2D)             (None, 14, 14, 256)  172032      activation_267[0][0]             
__________________________________________________________________________________________________
batch_normalization_265 (BatchN (None, 14, 14, 192)  576         conv2d_296[0][0]                 
__________________________________________________________________________________________________
batch_normalization_268 (BatchN (None, 14, 14, 256)  768         conv2d_299[0][0]                 
__________________________________________________________________________________________________
activation_265 (Activation)     (None, 14, 14, 192)  0           batch_normalization_265[0][0]    
__________________________________________________________________________________________________
activation_268 (Activation)     (None, 14, 14, 256)  0           batch_normalization_268[0][0]    
__________________________________________________________________________________________________
block8_2_mixed (Concatenate)    (None, 14, 14, 448)  0           activation_265[0][0]             
                                                                 activation_268[0][0]             
__________________________________________________________________________________________________
block8_2_conv (Conv2D)          (None, 14, 14, 2080) 933920      block8_2_mixed[0][0]             
__________________________________________________________________________________________________
block8_2 (Lambda)               (None, 14, 14, 2080) 0           block8_1_ac[0][0]                
                                                                 block8_2_conv[0][0]              
__________________________________________________________________________________________________
block8_2_ac (Activation)        (None, 14, 14, 2080) 0           block8_2[0][0]                   
__________________________________________________________________________________________________
conv2d_301 (Conv2D)             (None, 14, 14, 192)  399360      block8_2_ac[0][0]                
__________________________________________________________________________________________________
batch_normalization_270 (BatchN (None, 14, 14, 192)  576         conv2d_301[0][0]                 
__________________________________________________________________________________________________
activation_270 (Activation)     (None, 14, 14, 192)  0           batch_normalization_270[0][0]    
__________________________________________________________________________________________________
conv2d_302 (Conv2D)             (None, 14, 14, 224)  129024      activation_270[0][0]             
__________________________________________________________________________________________________
batch_normalization_271 (BatchN (None, 14, 14, 224)  672         conv2d_302[0][0]                 
__________________________________________________________________________________________________
activation_271 (Activation)     (None, 14, 14, 224)  0           batch_normalization_271[0][0]    
__________________________________________________________________________________________________
conv2d_300 (Conv2D)             (None, 14, 14, 192)  399360      block8_2_ac[0][0]                
__________________________________________________________________________________________________
conv2d_303 (Conv2D)             (None, 14, 14, 256)  172032      activation_271[0][0]             
__________________________________________________________________________________________________
batch_normalization_269 (BatchN (None, 14, 14, 192)  576         conv2d_300[0][0]                 
__________________________________________________________________________________________________
batch_normalization_272 (BatchN (None, 14, 14, 256)  768         conv2d_303[0][0]                 
__________________________________________________________________________________________________
activation_269 (Activation)     (None, 14, 14, 192)  0           batch_normalization_269[0][0]    
__________________________________________________________________________________________________
activation_272 (Activation)     (None, 14, 14, 256)  0           batch_normalization_272[0][0]    
__________________________________________________________________________________________________
block8_3_mixed (Concatenate)    (None, 14, 14, 448)  0           activation_269[0][0]             
                                                                 activation_272[0][0]             
__________________________________________________________________________________________________
block8_3_conv (Conv2D)          (None, 14, 14, 2080) 933920      block8_3_mixed[0][0]             
__________________________________________________________________________________________________
block8_3 (Lambda)               (None, 14, 14, 2080) 0           block8_2_ac[0][0]                
                                                                 block8_3_conv[0][0]              
__________________________________________________________________________________________________
block8_3_ac (Activation)        (None, 14, 14, 2080) 0           block8_3[0][0]                   
__________________________________________________________________________________________________
conv2d_305 (Conv2D)             (None, 14, 14, 192)  399360      block8_3_ac[0][0]                
__________________________________________________________________________________________________
batch_normalization_274 (BatchN (None, 14, 14, 192)  576         conv2d_305[0][0]                 
__________________________________________________________________________________________________
activation_274 (Activation)     (None, 14, 14, 192)  0           batch_normalization_274[0][0]    
__________________________________________________________________________________________________
conv2d_306 (Conv2D)             (None, 14, 14, 224)  129024      activation_274[0][0]             
__________________________________________________________________________________________________
batch_normalization_275 (BatchN (None, 14, 14, 224)  672         conv2d_306[0][0]                 
__________________________________________________________________________________________________
activation_275 (Activation)     (None, 14, 14, 224)  0           batch_normalization_275[0][0]    
__________________________________________________________________________________________________
conv2d_304 (Conv2D)             (None, 14, 14, 192)  399360      block8_3_ac[0][0]                
__________________________________________________________________________________________________
conv2d_307 (Conv2D)             (None, 14, 14, 256)  172032      activation_275[0][0]             
__________________________________________________________________________________________________
batch_normalization_273 (BatchN (None, 14, 14, 192)  576         conv2d_304[0][0]                 
__________________________________________________________________________________________________
batch_normalization_276 (BatchN (None, 14, 14, 256)  768         conv2d_307[0][0]                 
__________________________________________________________________________________________________
activation_273 (Activation)     (None, 14, 14, 192)  0           batch_normalization_273[0][0]    
__________________________________________________________________________________________________
activation_276 (Activation)     (None, 14, 14, 256)  0           batch_normalization_276[0][0]    
__________________________________________________________________________________________________
block8_4_mixed (Concatenate)    (None, 14, 14, 448)  0           activation_273[0][0]             
                                                                 activation_276[0][0]             
__________________________________________________________________________________________________
block8_4_conv (Conv2D)          (None, 14, 14, 2080) 933920      block8_4_mixed[0][0]             
__________________________________________________________________________________________________
block8_4 (Lambda)               (None, 14, 14, 2080) 0           block8_3_ac[0][0]                
                                                                 block8_4_conv[0][0]              
__________________________________________________________________________________________________
block8_4_ac (Activation)        (None, 14, 14, 2080) 0           block8_4[0][0]                   
__________________________________________________________________________________________________
conv2d_309 (Conv2D)             (None, 14, 14, 192)  399360      block8_4_ac[0][0]                
__________________________________________________________________________________________________
batch_normalization_278 (BatchN (None, 14, 14, 192)  576         conv2d_309[0][0]                 
__________________________________________________________________________________________________
activation_278 (Activation)     (None, 14, 14, 192)  0           batch_normalization_278[0][0]    
__________________________________________________________________________________________________
conv2d_310 (Conv2D)             (None, 14, 14, 224)  129024      activation_278[0][0]             
__________________________________________________________________________________________________
batch_normalization_279 (BatchN (None, 14, 14, 224)  672         conv2d_310[0][0]                 
__________________________________________________________________________________________________
activation_279 (Activation)     (None, 14, 14, 224)  0           batch_normalization_279[0][0]    
__________________________________________________________________________________________________
conv2d_308 (Conv2D)             (None, 14, 14, 192)  399360      block8_4_ac[0][0]                
__________________________________________________________________________________________________
conv2d_311 (Conv2D)             (None, 14, 14, 256)  172032      activation_279[0][0]             
__________________________________________________________________________________________________
batch_normalization_277 (BatchN (None, 14, 14, 192)  576         conv2d_308[0][0]                 
__________________________________________________________________________________________________
batch_normalization_280 (BatchN (None, 14, 14, 256)  768         conv2d_311[0][0]                 
__________________________________________________________________________________________________
activation_277 (Activation)     (None, 14, 14, 192)  0           batch_normalization_277[0][0]    
__________________________________________________________________________________________________
activation_280 (Activation)     (None, 14, 14, 256)  0           batch_normalization_280[0][0]    
__________________________________________________________________________________________________
block8_5_mixed (Concatenate)    (None, 14, 14, 448)  0           activation_277[0][0]             
                                                                 activation_280[0][0]             
__________________________________________________________________________________________________
block8_5_conv (Conv2D)          (None, 14, 14, 2080) 933920      block8_5_mixed[0][0]             
__________________________________________________________________________________________________
block8_5 (Lambda)               (None, 14, 14, 2080) 0           block8_4_ac[0][0]                
                                                                 block8_5_conv[0][0]              
__________________________________________________________________________________________________
block8_5_ac (Activation)        (None, 14, 14, 2080) 0           block8_5[0][0]                   
__________________________________________________________________________________________________
conv2d_313 (Conv2D)             (None, 14, 14, 192)  399360      block8_5_ac[0][0]                
__________________________________________________________________________________________________
batch_normalization_282 (BatchN (None, 14, 14, 192)  576         conv2d_313[0][0]                 
__________________________________________________________________________________________________
activation_282 (Activation)     (None, 14, 14, 192)  0           batch_normalization_282[0][0]    
__________________________________________________________________________________________________
conv2d_314 (Conv2D)             (None, 14, 14, 224)  129024      activation_282[0][0]             
__________________________________________________________________________________________________
batch_normalization_283 (BatchN (None, 14, 14, 224)  672         conv2d_314[0][0]                 
__________________________________________________________________________________________________
activation_283 (Activation)     (None, 14, 14, 224)  0           batch_normalization_283[0][0]    
__________________________________________________________________________________________________
conv2d_312 (Conv2D)             (None, 14, 14, 192)  399360      block8_5_ac[0][0]                
__________________________________________________________________________________________________
conv2d_315 (Conv2D)             (None, 14, 14, 256)  172032      activation_283[0][0]             
__________________________________________________________________________________________________
batch_normalization_281 (BatchN (None, 14, 14, 192)  576         conv2d_312[0][0]                 
__________________________________________________________________________________________________
batch_normalization_284 (BatchN (None, 14, 14, 256)  768         conv2d_315[0][0]                 
__________________________________________________________________________________________________
activation_281 (Activation)     (None, 14, 14, 192)  0           batch_normalization_281[0][0]    
__________________________________________________________________________________________________
activation_284 (Activation)     (None, 14, 14, 256)  0           batch_normalization_284[0][0]    
__________________________________________________________________________________________________
block8_6_mixed (Concatenate)    (None, 14, 14, 448)  0           activation_281[0][0]             
                                                                 activation_284[0][0]             
__________________________________________________________________________________________________
block8_6_conv (Conv2D)          (None, 14, 14, 2080) 933920      block8_6_mixed[0][0]             
__________________________________________________________________________________________________
block8_6 (Lambda)               (None, 14, 14, 2080) 0           block8_5_ac[0][0]                
                                                                 block8_6_conv[0][0]              
__________________________________________________________________________________________________
block8_6_ac (Activation)        (None, 14, 14, 2080) 0           block8_6[0][0]                   
__________________________________________________________________________________________________
conv2d_317 (Conv2D)             (None, 14, 14, 192)  399360      block8_6_ac[0][0]                
__________________________________________________________________________________________________
batch_normalization_286 (BatchN (None, 14, 14, 192)  576         conv2d_317[0][0]                 
__________________________________________________________________________________________________
activation_286 (Activation)     (None, 14, 14, 192)  0           batch_normalization_286[0][0]    
__________________________________________________________________________________________________
conv2d_318 (Conv2D)             (None, 14, 14, 224)  129024      activation_286[0][0]             
__________________________________________________________________________________________________
batch_normalization_287 (BatchN (None, 14, 14, 224)  672         conv2d_318[0][0]                 
__________________________________________________________________________________________________
activation_287 (Activation)     (None, 14, 14, 224)  0           batch_normalization_287[0][0]    
__________________________________________________________________________________________________
conv2d_316 (Conv2D)             (None, 14, 14, 192)  399360      block8_6_ac[0][0]                
__________________________________________________________________________________________________
conv2d_319 (Conv2D)             (None, 14, 14, 256)  172032      activation_287[0][0]             
__________________________________________________________________________________________________
batch_normalization_285 (BatchN (None, 14, 14, 192)  576         conv2d_316[0][0]                 
__________________________________________________________________________________________________
batch_normalization_288 (BatchN (None, 14, 14, 256)  768         conv2d_319[0][0]                 
__________________________________________________________________________________________________
activation_285 (Activation)     (None, 14, 14, 192)  0           batch_normalization_285[0][0]    
__________________________________________________________________________________________________
activation_288 (Activation)     (None, 14, 14, 256)  0           batch_normalization_288[0][0]    
__________________________________________________________________________________________________
block8_7_mixed (Concatenate)    (None, 14, 14, 448)  0           activation_285[0][0]             
                                                                 activation_288[0][0]             
__________________________________________________________________________________________________
block8_7_conv (Conv2D)          (None, 14, 14, 2080) 933920      block8_7_mixed[0][0]             
__________________________________________________________________________________________________
block8_7 (Lambda)               (None, 14, 14, 2080) 0           block8_6_ac[0][0]                
                                                                 block8_7_conv[0][0]              
__________________________________________________________________________________________________
block8_7_ac (Activation)        (None, 14, 14, 2080) 0           block8_7[0][0]                   
__________________________________________________________________________________________________
conv2d_321 (Conv2D)             (None, 14, 14, 192)  399360      block8_7_ac[0][0]                
__________________________________________________________________________________________________
batch_normalization_290 (BatchN (None, 14, 14, 192)  576         conv2d_321[0][0]                 
__________________________________________________________________________________________________
activation_290 (Activation)     (None, 14, 14, 192)  0           batch_normalization_290[0][0]    
__________________________________________________________________________________________________
conv2d_322 (Conv2D)             (None, 14, 14, 224)  129024      activation_290[0][0]             
__________________________________________________________________________________________________
batch_normalization_291 (BatchN (None, 14, 14, 224)  672         conv2d_322[0][0]                 
__________________________________________________________________________________________________
activation_291 (Activation)     (None, 14, 14, 224)  0           batch_normalization_291[0][0]    
__________________________________________________________________________________________________
conv2d_320 (Conv2D)             (None, 14, 14, 192)  399360      block8_7_ac[0][0]                
__________________________________________________________________________________________________
conv2d_323 (Conv2D)             (None, 14, 14, 256)  172032      activation_291[0][0]             
__________________________________________________________________________________________________
batch_normalization_289 (BatchN (None, 14, 14, 192)  576         conv2d_320[0][0]                 
__________________________________________________________________________________________________
batch_normalization_292 (BatchN (None, 14, 14, 256)  768         conv2d_323[0][0]                 
__________________________________________________________________________________________________
activation_289 (Activation)     (None, 14, 14, 192)  0           batch_normalization_289[0][0]    
__________________________________________________________________________________________________
activation_292 (Activation)     (None, 14, 14, 256)  0           batch_normalization_292[0][0]    
__________________________________________________________________________________________________
block8_8_mixed (Concatenate)    (None, 14, 14, 448)  0           activation_289[0][0]             
                                                                 activation_292[0][0]             
__________________________________________________________________________________________________
block8_8_conv (Conv2D)          (None, 14, 14, 2080) 933920      block8_8_mixed[0][0]             
__________________________________________________________________________________________________
block8_8 (Lambda)               (None, 14, 14, 2080) 0           block8_7_ac[0][0]                
                                                                 block8_8_conv[0][0]              
__________________________________________________________________________________________________
block8_8_ac (Activation)        (None, 14, 14, 2080) 0           block8_8[0][0]                   
__________________________________________________________________________________________________
conv2d_325 (Conv2D)             (None, 14, 14, 192)  399360      block8_8_ac[0][0]                
__________________________________________________________________________________________________
batch_normalization_294 (BatchN (None, 14, 14, 192)  576         conv2d_325[0][0]                 
__________________________________________________________________________________________________
activation_294 (Activation)     (None, 14, 14, 192)  0           batch_normalization_294[0][0]    
__________________________________________________________________________________________________
conv2d_326 (Conv2D)             (None, 14, 14, 224)  129024      activation_294[0][0]             
__________________________________________________________________________________________________
batch_normalization_295 (BatchN (None, 14, 14, 224)  672         conv2d_326[0][0]                 
__________________________________________________________________________________________________
activation_295 (Activation)     (None, 14, 14, 224)  0           batch_normalization_295[0][0]    
__________________________________________________________________________________________________
conv2d_324 (Conv2D)             (None, 14, 14, 192)  399360      block8_8_ac[0][0]                
__________________________________________________________________________________________________
conv2d_327 (Conv2D)             (None, 14, 14, 256)  172032      activation_295[0][0]             
__________________________________________________________________________________________________
batch_normalization_293 (BatchN (None, 14, 14, 192)  576         conv2d_324[0][0]                 
__________________________________________________________________________________________________
batch_normalization_296 (BatchN (None, 14, 14, 256)  768         conv2d_327[0][0]                 
__________________________________________________________________________________________________
activation_293 (Activation)     (None, 14, 14, 192)  0           batch_normalization_293[0][0]    
__________________________________________________________________________________________________
activation_296 (Activation)     (None, 14, 14, 256)  0           batch_normalization_296[0][0]    
__________________________________________________________________________________________________
block8_9_mixed (Concatenate)    (None, 14, 14, 448)  0           activation_293[0][0]             
                                                                 activation_296[0][0]             
__________________________________________________________________________________________________
block8_9_conv (Conv2D)          (None, 14, 14, 2080) 933920      block8_9_mixed[0][0]             
__________________________________________________________________________________________________
block8_9 (Lambda)               (None, 14, 14, 2080) 0           block8_8_ac[0][0]                
                                                                 block8_9_conv[0][0]              
__________________________________________________________________________________________________
block8_9_ac (Activation)        (None, 14, 14, 2080) 0           block8_9[0][0]                   
__________________________________________________________________________________________________
conv2d_329 (Conv2D)             (None, 14, 14, 192)  399360      block8_9_ac[0][0]                
__________________________________________________________________________________________________
batch_normalization_298 (BatchN (None, 14, 14, 192)  576         conv2d_329[0][0]                 
__________________________________________________________________________________________________
activation_298 (Activation)     (None, 14, 14, 192)  0           batch_normalization_298[0][0]    
__________________________________________________________________________________________________
conv2d_330 (Conv2D)             (None, 14, 14, 224)  129024      activation_298[0][0]             
__________________________________________________________________________________________________
batch_normalization_299 (BatchN (None, 14, 14, 224)  672         conv2d_330[0][0]                 
__________________________________________________________________________________________________
activation_299 (Activation)     (None, 14, 14, 224)  0           batch_normalization_299[0][0]    
__________________________________________________________________________________________________
conv2d_328 (Conv2D)             (None, 14, 14, 192)  399360      block8_9_ac[0][0]                
__________________________________________________________________________________________________
conv2d_331 (Conv2D)             (None, 14, 14, 256)  172032      activation_299[0][0]             
__________________________________________________________________________________________________
batch_normalization_297 (BatchN (None, 14, 14, 192)  576         conv2d_328[0][0]                 
__________________________________________________________________________________________________
batch_normalization_300 (BatchN (None, 14, 14, 256)  768         conv2d_331[0][0]                 
__________________________________________________________________________________________________
activation_297 (Activation)     (None, 14, 14, 192)  0           batch_normalization_297[0][0]    
__________________________________________________________________________________________________
activation_300 (Activation)     (None, 14, 14, 256)  0           batch_normalization_300[0][0]    
__________________________________________________________________________________________________
block8_10_mixed (Concatenate)   (None, 14, 14, 448)  0           activation_297[0][0]             
                                                                 activation_300[0][0]             
__________________________________________________________________________________________________
block8_10_conv (Conv2D)         (None, 14, 14, 2080) 933920      block8_10_mixed[0][0]            
__________________________________________________________________________________________________
block8_10 (Lambda)              (None, 14, 14, 2080) 0           block8_9_ac[0][0]                
                                                                 block8_10_conv[0][0]             
__________________________________________________________________________________________________
conv_7b (Conv2D)                (None, 14, 14, 1536) 3194880     block8_10[0][0]                  
__________________________________________________________________________________________________
conv_7b_bn (BatchNormalization) (None, 14, 14, 1536) 4608        conv_7b[0][0]                    
__________________________________________________________________________________________________
conv_7b_ac (Activation)         (None, 14, 14, 1536) 0           conv_7b_bn[0][0]                 
__________________________________________________________________________________________________
global_average_pooling2d_3 (Glo (None, 1536)         0           conv_7b_ac[0][0]                 
__________________________________________________________________________________________________
dense_12 (Dense)                (None, 516)          793092      global_average_pooling2d_3[0][0] 
__________________________________________________________________________________________________
dropout_6 (Dropout)             (None, 516)          0           dense_12[0][0]                   
__________________________________________________________________________________________________
dense_13 (Dense)                (None, 256)          132352      dropout_6[0][0]                  
__________________________________________________________________________________________________
dropout_7 (Dropout)             (None, 256)          0           dense_13[0][0]                   
__________________________________________________________________________________________________
dense_14 (Dense)                (None, 64)           16448       dropout_7[0][0]                  
__________________________________________________________________________________________________
dense_15 (Dense)                (None, 2)            130         dense_14[0][0]                   
==================================================================================================
Total params: 55,278,758
Trainable params: 13,383,078
Non-trainable params: 41,895,680
__________________________________________________________________________________________________
None
In [61]:
# Define modifier to replace the sigmoid function of the last layer to a linear function
def model_modifier(m):
    m.layers[-1].activation = tf.keras.activations.linear

# Define losses functions. 0 is the index for a normal MRI
loss_normal = lambda output: K.mean(output[:, 0])

# Define losses functions. 2 is the index for a PVNH MRI
loss_PVNH = lambda output: K.mean(output[:, 1])
    
# Create Gradcam object
gradcam = Gradcam(model, model_modifier)

# Create Saliency object
saliency = Saliency(model, model_modifier)

# Iterate through the MRIs in test set

# Set background to white color
plt.rcParams['axes.facecolor']='white'
plt.rcParams['figure.facecolor']='white'
plt.rcParams['figure.edgecolor']='white'


print('\n \n' + '\033[1m' + 'EACH ORIGINAL MRI IS ANALYZED WITH TWO METHODS: CLASS ACTIVATION MAP (UPPER ROW) AND SALIENCY MAP (LOWER ROW)' + '\033[0m' + '\n')
print('\033[1m' + 'EACH MAP IS SUPERIMPOSED ON THE ORIGINAL MRI WITH A TRANSPARENCY THAT IS INVERSELY PROPORTIONAL TO THE ESTIMATED PROBABILITY OF THE MRI BELONGING TO THAT CATEGORY (NORMAL MRI OR PERIVENTRICULAR NODULAR HETEROTOPIA) \n \nHIGHER ESTIMATED PROBABILITIES PRODUCE CLEARLY SEEN MAPS OVERLAID ON THE ORIGINAL MRI AND LOWER ESTIMATED PROBABILITIES PRODUCE VERY TRANSPARENT OR NOT APPRECIABLE MAPS OVERLAID ON THE ORIGINAL MRI' + '\033[0m'+ '\n')


for i in range(20):
    
    # Print spaces to separate from the next image
    print('\n \n \n \n \n \n')
  
    # Print real classification of the image
    if y_true[i]==0:
        real_classification='Normal MRI'
    else:
        real_classification='PVNH'
        
    print('\033[1m' + 'REAL CLASSIFICATION OF THE IMAGE: {}'.format(real_classification) + '\033[0m')
   
    # Print model classification and model probability of MCD
    if y_predInceptionResNetV2[i]==0:
        predicted_classification='Normal MRI'
    else:
        predicted_classification='PVNH'   
    
    print('\033[1m' + 'MODEL CLASSIFICATION OF THE IMAGE: {}'.format(predicted_classification)  + '\033[0m \n') 
    print('\033[1m' + '   Prob. Normal MRI: {:.4f}    '.format(valInceptionResNetV2[i][0]) + 'Prob. PVNH: {:.4f}'.format(valInceptionResNetV2[i][1]) + '\033[0m')
  
    
    # Arrays to plot
    original_image=shuffled_val_X[i]
    list_heatmaps=[
        # GradCam heatmap for normal MRI
        normalize(gradcam(loss_normal, shuffled_val_X[i])),
        # GradCam heatmap for PVNH
        normalize(gradcam(loss_PVNH, shuffled_val_X[i])),
        
        # Saliency heatmap for normal MRI
        normalize(saliency(loss_normal, seed_input=np.expand_dims(shuffled_val_X[i], axis=0), smooth_noise=0.2)),
        # Saliency heatmap for PVNH
        normalize(saliency(loss_PVNH, seed_input=np.expand_dims(shuffled_val_X[i], axis=0), smooth_noise=0.2))
    ]
    
    # Define figure
    f=plt.figure(figsize=(20, 8))

    # Define the image grid
    grid = ImageGrid(f, 111,
                nrows_ncols=(2, 2),
                axes_pad=0.05,
                share_all=True,
                cbar_location="right",
                cbar_mode=None,
                cbar_size="2%",
                cbar_pad=0.15)

    
    # Iterate over the graphs
    for j, axis in enumerate(grid):
        # Plot original 
        im=axis.imshow(original_image)
        im=axis.imshow(list_heatmaps[j][0], cmap='jet', alpha=0.5*valInceptionResNetV2[i][j%2])
        im=axis.set_xticks([])
        im=axis.set_yticks([])
    
    # Create scalarmappable for obtaining the colorbar from 0 to 1
    sm = plt.cm.ScalarMappable(cmap='jet', norm=plt.Normalize(vmin=0, vmax=1))
    plt.colorbar(sm)
    plt.show()
 
EACH ORIGINAL MRI IS ANALYZED WITH TWO METHODS: CLASS ACTIVATION MAP (UPPER ROW) AND SALIENCY MAP (LOWER ROW)

EACH MAP IS SUPERIMPOSED ON THE ORIGINAL MRI WITH A TRANSPARENCY THAT IS INVERSELY PROPORTIONAL TO THE ESTIMATED PROBABILITY OF THE MRI BELONGING TO THAT CATEGORY (NORMAL MRI OR PERIVENTRICULAR NODULAR HETEROTOPIA) 
 
HIGHER ESTIMATED PROBABILITIES PRODUCE CLEARLY SEEN MAPS OVERLAID ON THE ORIGINAL MRI AND LOWER ESTIMATED PROBABILITIES PRODUCE VERY TRANSPARENT OR NOT APPRECIABLE MAPS OVERLAID ON THE ORIGINAL MRI


 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0003    Prob. PVNH: 0.9997
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0005    Prob. PVNH: 0.9995
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 0.9876    Prob. PVNH: 0.0124
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.4888    Prob. PVNH: 0.5112
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0195    Prob. PVNH: 0.9805
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0444    Prob. PVNH: 0.9556
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0773    Prob. PVNH: 0.9227
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: Normal MRI
MODEL CLASSIFICATION OF THE IMAGE: Normal MRI 

   Prob. Normal MRI: 1.0000    Prob. PVNH: 0.0000
 
 
 
 
 

REAL CLASSIFICATION OF THE IMAGE: PVNH
MODEL CLASSIFICATION OF THE IMAGE: PVNH 

   Prob. Normal MRI: 0.0000    Prob. PVNH: 1.0000